"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>
...
一切看起来都是正确的,除了 UserEntryPoint
是 null 并且 PdbFileFromAssembly
指向构建部件。 UserEntryPoint
应该有一个有效值,并且 PdbFileFromAssembly
应该匹配 Path
?
注: E3D17590C9F44E73BC95AC40AB59EC891
和 e3d17590-c9f4-4e73-bc95-ac40ab59ec89
几乎相同。
我将调试器选项配置为加载此程序集的符号:
我还确保清除了 ReSharper 缓存,并且程序集资源管理器中显示的程序集(生成符号文件的来源)指向与调试选项中的 "loaded module" 路径相同的位置.
在 Modules window 中,我发现 Symbol Status 是 "Symbol loading disabled by Include/Exclude setting"。右键单击模块并选择 "Load 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>
...
一切看起来都是正确的,除了 UserEntryPoint
是 null 并且 PdbFileFromAssembly
指向构建部件。 UserEntryPoint
应该有一个有效值,并且 PdbFileFromAssembly
应该匹配 Path
?
注: E3D17590C9F44E73BC95AC40AB59EC891
和 e3d17590-c9f4-4e73-bc95-ac40ab59ec89
几乎相同。
我将调试器选项配置为加载此程序集的符号:
我还确保清除了 ReSharper 缓存,并且程序集资源管理器中显示的程序集(生成符号文件的来源)指向与调试选项中的 "loaded module" 路径相同的位置.
在 Modules window 中,我发现 Symbol Status 是 "Symbol loading disabled by Include/Exclude setting"。右键单击模块并选择 "Load Symbols" 解决了问题: