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

在微软,我可以下载适用于XP,Vista,Server甚至Windows 7的Windows符号包 。

我的问题是:如何在Visual Studio中使用这些符号? 在VS 2008中,我可以添加下载和提取的符号,所以我可以debugging到Windows本身?

我想实现的:我想debugging_beginthreadex / endthreadex,看看为什么/某些代码正在丢失句柄 。

我知道,我可以设置Visual Studio 2008下载源文件 ,但它看起来像这只是为.NET框架的来源?

符号包只能用于当前正在运行的Windows版本 – 它们将安装到C:\ Windows \ Symbols中,并且一次只能安装一个。

改用Symbol server。

符号服务器

在Visual Studio中,转到: Tools / Options / Debugging / Symbols 。 将“ http://msdl.microsoft.com/download/symbols ”添加到Symbol file (.pdb) locations列表中。 您需要在Cache symbols from symbol servers to this directory:输入缓存Cache symbols from symbol servers to this directory: 。 我使用C:\ WebSymbols。 你会有足够的空间(我已经有600Mb左右),虽然你可以定期清理目录。

这会最初放慢您的调试会话,直到您通常需要的所有符号都被缓存为止。

或者,您可以通过将_NT_SYMBOL_PATH环境变量设置为_NT_SYMBOL_PATH来为全部Windows调试器全局设置: SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols

您还可以(作为您的构建过程的一部分)使用SYMSTORE.EXE(来自Windows的调试工具 )收集您自己的.PDB文件,并将该目录添加到此列表中。

源服务器

.PDB文件可以有一个(可选)引用它们的源文件。 正如你所提到的,你可以使用这个功能来下载.NET源代码,但是它也可以用于C ++源文件。 我们使用SVN路径注释我们的.PDB文件,并修改原始源文件。 当我们使用“Go to Source”时,Visual Studio使用SVN下载EXE的源代码。 这真的很酷。

要注释您的PDB文件,您需要Windows调试工具中的srcsrv目录中的工具。

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