Microsoft调试器中"符号"的需要/使用是什么?
我花了一些时间试图找出调试器一段时间后,从来没有能够让它有任何意义(我试图调试服务器挂起......).我的部分问题是没有正确的'符号'.
这些是什么?为什么我需要它们?我不只是在寻找文字吗?
有没有更好的链接使用它比如何在几分钟内解决Windows系统崩溃?
您需要符号才能将地址转换为有意义的名称.例如,每次函数调用时堆栈上都有位置:
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.