使用生成的符号在反编译源中的断点处“未加载任何符号”通知

时间:2018-08-14 17:13:01

标签: visual-studio resharper visual-studio-debugging pdb-files

我正在尝试在调试时进入/进入以下代码行:

namespace ViewModels
{
    public abstract class CustomFormViewModel : INotifyPropertyChanged, IDisposable
    {
        private DBContextModels.Models.DbBuildingContext _dbContext;

        public CustomFormViewModel()
        {
            ...

            // no symbols loaded, cannot step into
            _dbContext = new DBContextModels.Models.DbBuildingContext();
        }
    }
}

DbBuildingContext是在程序集 DbContextModels.dll 中定义的,该程序集没有源文件或符号文件,因此,我尝试使用生成的符号进入其反编译源文件。

单步执行上述语句没有任何效果,只是单步执行了,在DbBuildingContext构造函数中设置一个断点会发出“未加载任何符号” 通知。

enter image description here

使用ReSharper,我为 DbContextModels.dll 生成了符号文件:

enter image description here

并将其存储在此处

"xxx\DbContextModels.pdb\E3D17590C9F44E73BC95AC40AB59EC891\DbContextModels.pdb"

“显示PDB内容” 显示

<?xml version="1.0" encoding="utf-8"?>
<Pdb Name="DbContextModels" 
 Path="xxx\DbContextModels.pdb\E3D17590C9F44E73BC95AC40AB59EC891\DbContextModels.pdb"  
 AssemblyPath="xxx\DbContextModels.dll" 
 SignatureFromAssembly="e3d17590-c9f4-4e73-bc95-ac40ab59ec89 " 
 PdbFileFromAssembly="xxx\notme\xxx\DbContextModels\obj\Debug\DbContextModels.pdb ">
  <UserEntryPoint>null</UserEntryPoint>
  ...

UserEntryPoint null 并且PdbFileFromAssembly指向构建程序集的用户的本地路径之外,其他所有内容都看起来正确。 UserEntryPoint是否应具有有效值,并且PdbFileFromAssembly是否应与Path匹配?

注意E3D17590C9F44E73BC95AC40AB59EC891e3d17590-c9f4-4e73-bc95-ac40ab59ec89几乎相同。

我配置了调试器选项来为该程序集加载符号:

enter image description here

enter image description here

我还确保清除了ReSharper缓存,并确保在Assembly Explorer中显示的程序集(从中生成符号文件)指向与调试选项中“已加载的模块”路径相同的位置。

1 个答案:

答案 0 :(得分:1)

模块窗口中,我发现符号状态为“通过包含/排除设置禁用了符号加载” 。右键单击该模块,然后选择“加载符号”即可解决该问题:

enter image description here