visual-studio - 使用生成的符号在反编译源中的断点处发出“未加载符号”通知
问题描述
我试图在调试时单步/中断下面的代码行:
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>
...
一切看起来都是正确的,除了UserEntryPoint
null并且指向PdbFileFromAssembly
构建程序集的用户的本地路径。应该UserEntryPoint
有一个有效的值,并且应该PdbFileFromAssembly
匹配Path
?
注意: E3D17590C9F44E73BC95AC40AB59EC891
和e3d17590-c9f4-4e73-bc95-ac40ab59ec89
几乎相同。
我配置了调试器选项来加载这个程序集的符号:
我还确保清除了 ReSharper 缓存,并且在程序集资源管理器中显示的程序集(从中生成符号文件)指向与调试选项中的“加载模块”路径相同的位置。
解决方案
推荐阅读
- arrays - 在powershell中,如何从命令行传递的“剩余”参数构建字符串数组?
- javascript - onClick 事件未在 React Popover 上触发(材料 UI)
- c++ - 为什么在 C++ 中出现重新定义错误?
- html - 文本不响应单独的段落(html、css)
- angular - 使用 Angular 进行 Firebase 身份验证:如何在关闭选项卡时保持用户会话处于活动状态?onIdTokenChanged 与 onAuthStateChanged
- excel - 使用单元格值中的文件名和路径保存 Excel 工作表的宏
- python-3.x - 将 .npz 模型从 ChainerRL 转换为 Keras 模型,或替代方法?
- typescript - Webpack 和 Typescript - 使用 /node_modules/.bin/tsc 而不是全局
- vue.js - vue-table-2 更改搜索过滤器以在按钮单击而不是击键时触发
- r - 有没有办法在 R 中生成一个至少有一些负特征值的矩阵?