3

在 Microsoft,我可以下载XP、Vista、Server 甚至 Windows 7 的 Windows 符号包

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

我想要实现的目标:我想调试 _beginthreadex/endthreadex,以查看某些代码丢失句柄的原因/位置

我知道我可以将 Visual Studio 2008 设置为下载源文件,但看起来这仅适用于 .net 框架源?

4

2 回答 2

5

符号包仅适用于您当前运行的 Windows 版本——它们安装在 C:\Windows\Symbols 中,您一次只能安装一个。

请改用符号服务器。

符号服务器

在 Visual Studio中,转到:Tools/// 。将“ http://msdl.microsoft.com/download/symbols ”添加到列表中。您需要在. 我使用 C:\WebSymbols。尽管您可以定期清理目录,但您将有足够的空间(我的空间大约为 600Mb)。OptionsDebuggingSymbolsSymbol file (.pdb) locationsCache symbols from symbol servers to this directory:

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

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

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

源服务器

.PDB 文件可以具有对构建它们的源文件的(可选)引用。正如您所提到的,您可以使用此功能下载 .NET 源代码,但它也适用于 C++ 源文件。我们用原始源文件的 SVN 路径和修订版注释我们的 .PDB 文件。当我们使用“转到源代码”时,Visual Studio 使用 SVN 来下载构建 EXE 的确切源代码。这真的很酷。

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

于 2009-02-17T11:45:16.517 回答
0

如果您想“调试到 Windows 本身”,您可能希望能够附加到已经运行的进程,这是 MSVC++ 的 Express 版本无法做到的。因此,如果您使用的是 Express 版本(或者即使您不是),我建议您下载Debugging Tools for Windows。这提供了windbgcdb调试器,它们比 MSVC++ 附带的调试器更不友好,但更强大。

于 2009-02-17T11:53:23.640 回答