5

我需要在 Windbg 中设置哪些设置才能像使用 Visual Studio 一样进入/通过 MFC 源代码?

4

1 回答 1

11

进入 MFC 源代码需要两件事:加载正确的 MFC 符号,并设置正确的源路径。

MFC 符号

在 Windbg 中设置符号路径的常见建议是使用.symfix,它将公共 Microsoft 符号服务器添加到您的符号路径中。这将允许 Windbg 为许多 Windows DLL(包括 MFC DLL)从 Microsoft 下载 PDB。但是,这些 PDB 不包含源单步执行所需的私有符号。

相反,您需要告诉 Windbg 首先查找与 Visual Studio 一起安装的私有符号 PDB,然后再查找符号服务器:

.sympath c:\windows\symbols\dll
.symfix+ c:\symbols

或者,如果您想复制并粘贴到File > Symbol File Path...对话框中,请使用以下命令:

c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols

给出的c:\symbols路径.symfix+告诉 Windbg 将它从服务器下载的任何 PDB 的缓存副本存储在哪里。

windbg app.exe您可以通过使用 Windbg ( ) 启动 MFC 应用程序、强制加载 MFC 符号并检查输出(这是 Windbg 命令会话的日志)来检查是否找到了正确的 PDB :

0:000> $$ setup the correct sympath
0:000> .sympath c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols
Symbol search path is: c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols

0:000> $$ find the MFC DLL's full path
0:000> lm fm mfc*
start    end        module name
528e0000 52fa2000   mfc100d  C:\Windows\SysWOW64\mfc100d.dll
72390000 7239d000   MFC100ENU C:\Windows\SysWOW64\MFC100ENU.DLL

0:000> $$ force the symbols to load
0:000> .reload /f C:\Windows\SysWOW64\mfc100d.dll

0:000> $$ check for "private pdb symbols"
0:000> lm m mfc*
start    end        module name
528e0000 52fa2000   mfc100d    (private pdb symbols)  c:\windows\symbols\dll\mfc100d.i386.pdb
72390000 7239d000   MFC100ENU   (deferred)             

注意 mfc100d 行包含私有 pdb 符号。如果最后一条命令显示,没有privatemfc100d (pdb symbols)一词,则您没有加载正确的 PDB,并且您将无法进入 MFC 源代码。试着再看看你的同情心。您还可以尝试打开并运行命令以查看有关尝试加载 PDB 的更多诊断信息。!sym noisy.reload /f mfcdllpath

MFC 源路径

如果您已完成默认的 Visual Studio 安装,您的 MFC(和 C 运行时)源将位于:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfcm
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src

对于 VS2010。过去的版本具有类似的目录布局。您可以使用以下方法进行设置:

.sympath C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfcm;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src;

或者将上面的行(不带.sympath)复制并粘贴到File > Source File Path...对话框中。

如果这些目录不存在,您可以查看 Visual Studio 认为 MFC 源代码的位置。

VS2010(可能是 2012 年):

  • 启动 Visual Studio
  • 打开一个项目
  • 在项目菜单中,选择属性
  • 在左窗格中,展开配置属性并选择 VC++ 目录
  • 在右侧窗格中,查看 Source Directories 的值

VS2008 及更早版本

  • 启动 Visual Studio
  • 在工具菜单中,选择选项
  • 在左侧窗格中,展开 Projects and Solutions 并选择 VC++ Directories
  • 在右侧窗格中,查看 Source Directories 的值
于 2013-02-22T18:56:50.260 回答