代码之家  ›  专栏  ›  技术社区  ›  samus

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

  •  1
  • samus  · 技术社区  · 6 年前

    调试时,我正在尝试单步执行/中断以下代码行:

    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文件 ,我没有其源文件或符号文件,因此我正在尝试使用生成的符号进入它的反编译源。

    单步执行上述语句没有任何效果,它只是在 数据库生成上下文 构造函数给出 “未加载符号” 通知。

    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 无效的 PdbFileFromAssembly 指向生成程序集的用户的本地路径。应该 用户入口点 具有有效值,并且应该 PDB来自组件的文件 比赛 Path ?

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

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

    enter image description here

    enter image description here

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   samus    6 年前

    模块 窗口我发现符号状态是 “通过包含/排除设置禁用符号加载” . 右键单击模块并选择“加载符号”解决了这个问题:

    enter image description here