我正在尝试调试在visual studio中运行但在服务器环境中崩溃的exe。当它崩溃时,服务器让我有机会在visual studio中“调试”它 - 它会打出一个打印输出,其中包含一长串的行,这些行显示为“没有加载符号”。这是什么意思?它试图加载的“符号”是什么?
以下是崩溃打印输出的前两行:
'AutoMatcher.exe':已加载'PathToMyExe \ MyExecutables.exe',无本机 符号文件中的符号。 - 'AutoMatcher.exe':已加载'C:\ Windows \ System32 \ ntdll.dll',未加载符号。
更像这样......结束'没有加载符号'
答案 0 :(得分:1)
此上下文中的“符号”表示存储在[AssemblyName].PDB
文件中的函数解除引用索引。调试符号用于在发生异常时生成详细的堆栈跟踪。出于性能和安全原因,部署了生产版本代码而没有调试文件/符号。
在开发.NET应用程序时,在构建调试模式时会构建托管代码的调试符号。但是,默认情况下不安装OS级功能的符号。如果您正在进行操作系统级调用并希望能够调试操作系统,则MSDN可以使用Windows调试器符号。
答案 1 :(得分:0)
这意味着调试器不知道该DLL中任何函数名称(“符号”)。
答案 2 :(得分:0)
Visual Studio符号文件是具有.pdb扩展名的文件,在构建可执行文件(DLL或.EXE或其他类型)时由链接器生成。
匹配.pdb文件对于调试至关重要,因为这些文件包含汇编代码和源代码行之间的关联,以及其他信息流。
您可以在此处找到有关.pdb文件的更多信息http://support.microsoft.com/kb/121366
要调试服务器端方案,您需要将.pdb文件从构建中复制到服务器上。