"No symbols loaded" 使用生成的符号在反编译源中的断点通知

"No symbols loaded" notification at break point in decompiled source using generated symbols

我正在尝试 step/break 调试时进入下面的代码行:

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构造函数中设置断点给出"no symbols loaded"通知.

使用 ReSharper,我为 DbContextModels.dll:

生成了一个符号文件

并存储在这里

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

"Show PDB Content"揭示

<?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>
  ...

一切看起来都是正确的,除了 UserEntryPointnull 并且 PdbFileFromAssembly 指向构建部件。 UserEntryPoint 应该有一个有效值,并且 PdbFileFromAssembly 应该匹配 Path?

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

我将调试器选项配置为加载此程序集的符号:

我还确保清除了 ReSharper 缓存,并且程序集资源管理器中显示的程序集(生成符号文件的来源)指向与调试选项中的 "loaded module" 路径相同的位置.

Modules window 中,我发现 Symbol Status 是 "Symbol loading disabled by Include/Exclude setting"。右键单击模块并选择 "Load Symbols" 解决了问题: