1

我正在尝试调试在 Visual Studio 中运行但在服务器环境中崩溃的 exe。当它崩溃时,服务器让我有机会在 Visual Studio 中“调试”它——它会打印出一个打印输出,其中有一长串写着“未加载符号”的行。这是什么意思?它试图加载的“符号”是什么?

这是崩溃打印输出的前两行:

“AutoMatcher.exe”:已加载“PathToMyExe\MyExecutables.exe”,符号文件中没有本机符号。-“AutoMatcher.exe”:已加载“C:\Windows\System32\ntdll.dll”,未加载任何符号。

更多这样的......结束'没有加载符号'

4

3 回答 3

1

在这种情况下,“符号”是指存储在[AssemblyName].PDB文件中的函数取消引用索引。调试符号用于在发生异常时生成详细的堆栈跟踪。出于性能和安全原因,无需调试文件/符号即可部署生产发布代码。

开发 .NET 应用程序时,托管代码的调试符号是在调试模式下生成时生成的。但是,默认情况下不安装操作系统级功能的符号。如果您正在进行操作系统级别的调用并希望能够调试操作系统,则可以在MSDN上找到 Windows 调试器符号。

于 2012-12-13T17:05:52.953 回答
0

这意味着调试器不知道该 DLL 中的任何函数名称(“符号”)。

于 2012-12-13T17:06:52.337 回答
0

Visual Studio 符号文件是具有 .pdb 扩展名的文件,由链接器在生成可执行文件(DLL 或 .EXE 或其他类型)时生成。

拥有匹配的 .pdb 文件对于调试至关重要,因为这些文件除了包含其他信息流之外,还包含汇编代码和源代码行之间的关联。

您可以在此处找到有关 .pdb 文件的更多信息http://support.microsoft.com/kb/121366

要调试服务器端方案,您需要将构建中的 .pdb 文件复制到服务器上。

于 2012-12-13T17:08:41.243 回答