我需要在 Windbg 中设置哪些设置才能像使用 Visual Studio 一样进入/通过 MFC 源代码?
1 回答
进入 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 的值