用于Windows的Microsoft调试工具中的符号?

mad*_*lor 2 debugging symbols

Microsoft调试器中"符号"的需要/使用是什么?

我花了一些时间试图找出调试器一段时间后,从来没有能够让它有任何意义(我试图调试服务器挂起......).我的部分问题是没有正确的'符号'.

这些是什么?为什么我需要它们?我不只是在寻找文字吗?

有没有更好的链接使用它比如何在几分钟内解决Windows系统崩溃

esa*_*sac 6

您需要符号才能将地址​​转换为有意义的名称.例如,每次函数调用时堆栈上都有位置:

0x00003791
0x00004a42
Run Code Online (Sandbox Code Playgroud)

符号允许调试器将这些地址映射到方法

0x00003791 myprog!methodnamea
0x00004a42 myprog!methodnameb
Run Code Online (Sandbox Code Playgroud)

构建程序的调试版本时,编译器会发出扩展名为.PDB的符号.它还包含行信息,因此您可以进行源代码调试等.

您需要正确设置符号搜索路径以供调试器选择.在命令窗口中,您可以执行此操作

.sympath c:\symbols;c:\temp\symbols
Run Code Online (Sandbox Code Playgroud)

为了让它在这些目录中搜索.PDB.它还将查找从中运行可执行文件的同一目录.

使用Microsoft公共符号服务器也可能有帮助,以便您可以在开头使用此路径解析OS二进制文件,如NTDLL,GDI等.

.sympath SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols;c:\symbols
Run Code Online (Sandbox Code Playgroud)

您需要先创建c:\ websymbols.