【问题标题】:Debugger does not step into MFC source code调试器不单步执行 MFC 源代码
【发布时间】:2014-06-07 00:43:15
【问题描述】:

我在 VS2010 中有一个新的 SDI 项目,但我无法进入 MFC 源代码。我遵循了here 的步骤,似乎由于某些原因没有加载资源符号,但它也不会在右键单击时加载,如那里投票最多的答案中所述。

当我进入调试 >> Windows > 模块时,该窗口将符号状态列显示为 Cannot find or open the PDB file。我想这就是问题所在,但是当我右键单击任何一个模块(例如 mfc100enu.dll)时,我会得到另一个对话框,其中包含与找不到符号文件类似的消息。

找不到符号文件可能出了什么问题以及如何解决这个问题?

在我的基本 SDI 应用程序中,我想要进入的函数是 LoadFrame

BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) 
{
    // base class does the real work

    if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
    {
        return FALSE;
    }

...
}

任何提示我如何不加载它们以及可能出了什么问题?谢谢

更新

我能够让 VS2010 加载符号文件,方法是转到 Tools->Options->Debugging->Symbols 并选择复选框“Microsoft Symbol Servers”,现在 Visual Studio 会自动加载 PDB。但是我仍然无法进入该功能。

【问题讨论】:

  • mfc 代码是专有的 AFAIK,我认为你不能。
  • 你想进入哪里?我刚刚检查了 VS2005,它允许我进入位于我这里的 objcore.cpp:C:\Program Files (x86)\Microsoft Visual Studio 8\VC\atlmfc\src\mfc
  • @marcin_j 我用函数更新了问题。
  • 此外,您似乎正在尝试调试使用非调试 MFC dll 的 MFC 应用程序,它应该以 d 结尾 - 在我的情况下是 mfc80ud.dll。也许这就是问题所在。
  • @LuchianGrigore:如果 MFC 是专有的,但 MFC 源代码是随 Visual Studio 分发的,通常(幸运的是)您可以进入 MFC 代码。

标签: c++ visual-studio-2010 visual-c++ mfc


【解决方案1】:

我发现添加符号服务器并没有解决我的问题。

解决问题的方法是将此目录添加到位置列表中以查找符号。不知道为什么 Visual Studio 不自己添加这个。

C:\Windows\Symbols\dll

【讨论】:

  • 在我安装 VS 2015 时,添加 C:\Windows\Symbols\dll 没有帮助,但是从 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC 添加了一些目录\atlmfc\lib 确实有帮助。
【解决方案2】:

将您的 mfc 库链接模式更改为静态库。 在项目属性>>配置属性>>常规>>使用MFC

调试后,你可以改回你喜欢的。 希望对您有所帮助。

【讨论】:

  • 这是正确的解决方案。但是在VS2019中,它位于配置属性>>高级>>使用MFC
【解决方案3】:

您需要 Visual Studio Professional 或更高版本。然后获得 MFC 的源代码和调试符号。如果给出,您只需要确保 PDB 位于符号路径中,正确安装 Visual Studio 就应该是这种情况。

【讨论】:

  • 我正在使用 VS2010 专业版。同样在工具>>选项>>调试>>符号中,我点击Load all symbols加载所有符号以防万一但没有用。
  • @zadane:您在安装过程中是否安装了 MFC 源文件? (不确定安装程序是否要求)。
  • @MichaelWalz 这是很久以前的事了,但我确信已经安装了 MFC 源代码,因为这可能会在路上突然出现,并且以后也可能以某种方式自行解决。
【解决方案4】:

使用 Visual Studio 2019,我遇到了同样的问题。 我无法使用 VC 调试器进入 MFC 基类。 我已经通过添加符号目录解决了它。到“符号文件位置”。

工具 > 选项 > 调试 > 符号

  • C:\Program Files (x86)\Microsoft Visual Studio\2019\ (Edition)\VC\Tools\MSVC\14.27.29110\atlmfc\lib\x86
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\ (Edition)\VC\Tools\MSVC\14.27.29110\atlmfc\lib\x64

此外,此设置无法解决 MBCS - 多字节字符集项目。 对于多字节项目,您必须使用“Microsoft Symbol Server”。 VS 安装程序不会为您安装所需的符号文件。 这意味着您无法在没有公共网络的情况下调试 MBCS 项目。

  • 选中“符号文件位置”中的“Microsoft 符号服务器”选项

查看下一个链接了解更多信息。

https://docs.microsoft.com/ko-kr/cpp/mfc/mfc-mbcs-dll-add-on

https://support.smartbear.com/testcomplete/docs/app-testing/desktop/visual-c/preparing/mfc-debug-info.html#WindowsSymbolCache

我觉得VS2019的安装和安装太复杂了。 MS 迅速改变了它。在所有开发者离开 VS 平台之前,他们不能继续它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2021-09-27
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多