首页 > 解决方案 > 使用生成的符号在反编译源中的断点处发出“未加载符号”通知

问题描述

我试图在调试时单步/中断下面的代码行:

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会给出“未加载符号”通知。

在此处输入图像描述

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

在此处输入图像描述

并将其存储在这里

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

一切看起来都是正确的,除了UserEntryPointnull并且指向PdbFileFromAssembly构建程序集的用户的本地路径。应该UserEntryPoint有一个有效的值,并且应该PdbFileFromAssembly匹配Path

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

我配置了调试器选项来加载这个程序集的符号:

在此处输入图像描述

在此处输入图像描述

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

标签: visual-studioresharpervisual-studio-debuggingpdb-files

解决方案


Modules窗口中,我发现 Symbol Status 是"Symbol loading disabled by Include/Exclude setting"。右键单击模块并选择“加载符号”解决了这个问题:

在此处输入图像描述


推荐阅读