如何在Visual Studio 2008中使用Windows符号包?

3
在微软公司,我可以下载Windows符号包,适用于XP、Vista、Server,甚至Windows 7
我的问题是:我如何在Visual Studio中使用这些符号?在VS 2008中,我应该在哪里添加已下载和提取的符号,以便我可以调试Windows本身?
我的目标是:我想调试_beginthreadex/endthreadex,以查看为什么/在哪里某些代码失去了句柄
我知道我可以设置Visual Studio 2008下载源文件,但似乎这只适用于.NET Framework源文件?
2个回答

5
符号包仅适用于您当前运行的Windows版本--它们安装到C:\ Windows \ Symbols中,并且一次只能安装一个。
请改用符号服务器。
符号服务器
在Visual Studio中,转到:工具 / 选项 / 调试 / 符号。将“http://msdl.microsoft.com/download/symbols”添加到符号文件(.pdb)位置列表中。您需要在缓存从符号服务器缓存到此目录的符号:中输入缓存目录。我使用C:\ WebSymbols。您需要足够的空间(我的大约有600Mb),尽管您可以定期清理目录。
这会使您的调试会话初始速度变慢,直到所有常用的符号都被缓存。
或者,您可以通过将_NT_SYMBOL_PATH环境变量设置为以下内容来为所有Windows调试器全局设置:SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols
你也可以在构建过程中使用SYMSTORE.EXE(来自Windows调试工具)收集自己的.PDB文件,并将该目录添加到此列表中。

源服务器

.PDB文件可以包含对构建它们的源文件的(可选)引用。正如您所提到的,您可以使用此功能下载.NET源代码,但它也适用于C++源文件。我们使用SVN路径和原始源文件的版本号注释我们的.PDB文件。当我们使用“转到源”时,Visual Studio使用SVN下载与EXE一起构建的确切源代码。这真的很酷。
要注释PDB文件,您需要使用Debugging Tools for Windows中的srcsrv目录中的工具。

太酷了!我以为那些符号只能被WinDbg和cdb独占使用。 - j_random_hacker
太好了!我已经设置好了,现在我可以获取符号 - 可惜我无法真正地逐步查看源代码,但至少现在有一些结果了。 - Sam

0
如果您想要“调试 Windows 本身”,您可能希望能够附加到已经运行的进程,而 MSVC++ 的 Express 版本无法做到这一点。因此,如果您正在使用 Express 版本(甚至不是),我建议下载Windows 调试工具。这提供了 windbgcdb 调试器,它们比 MSVC++ 包含的调试器更强大,但更不友好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接