【问题标题】:How can I make MSVC debugger step into Qt library source code again?如何让 MSVC 调试器再次进入 Qt 库源代码?
【发布时间】:2011-04-06 18:18:29
【问题描述】:

到目前为止,当我按下 F11 时,我的 Visual Studio 2008 调试器会优雅地进入 Qt 库代码。将 Qt 升级到最新版本并更改 QTDIR 后,F11 不再单步执行库代码。任何线索如何使调试器再次智能?

【问题讨论】:

  • 您链接到正确的调试库?也许检查 .pdb 文件是否存在并被 VS 调试器找到。

标签: qt visual-c++ debugging


【解决方案1】:

激活模块列表,Debug - Windows - Modules,查看加载了哪些库以及是否为这些库加载了调试符号。请注意,您需要在您的进程上激活调试器才能执行此操作。

在调试模式下,Qt 库应以 d 为后缀。例如 QtCored4.dll。如果您在列表中看到 QtCore4.dll,则您链接到了错误的库。如果它确实显示 QtCored4.dll 但在 Symbol Status 下存在与 Symbols loaded. 不同的东西,那么这就是原因。您可以通过右键单击 dll 并选择 Load Symbols 在此处手动加载符号。单击该文件后,它会询问 Pdb 文件。

您可以从工具 - 选项 - 调试(树) - 符号(树)中添加更多 pdb 文件位置(如果它们未加载但存在)。如果您希望自动加载符号。

如果它给出一些错误,即 pdb 文件与二进制文件不匹配或类似的东西,你应该重新构建你的 Qt 调试版本,除非你有更多的 pdb 文件可以尝试。使用 Visual Studio 命令提示符并转到 Qt 目录,运行 configure 和 nmake。这需要一段时间,可能需要几个小时。有一些切换到仅构建调试版本,但我忘记了它的去向。请注意,构建可能会失败,之后会很有趣地搜索 www.google.com。最好的选择可能是获取仅源包,我忘记了从哪里得到它,而且不容易找到。如果你知道在哪里得到它,请告诉我。我依稀记得可能有其他方法可以构建调试版本,但这是我唯一确定的方法。

【讨论】:

  • Qt 在 $(QTDIR)\bin 中提供它的 .pdb 文件。我必须将它包含在调试器选项中。
【解决方案2】:

@0xbaadf00d 建议“打开 Debug/Windows/Modules 视图”以验证哪些模块已成功加载,哪些未加载非常有用。

以下是我需要单步进入 Qt 源代码时检查的内容的摘要:

  • DLL 必须适用于开发人员 Qt 工具包中的 Qt 版本
  • Qt .pdb 文件必须存在于 Qt 工具包的文件夹中:bin、lib、plugins/platforms、plugins/qmltooling
  • Visual Studio 工具/选项/调试/符号需要 .pdb 文件的路径:
  • 如果使用 qt.conf 文件,必须指向正确的 bin 文件夹
  • 如果目标是 WinCE 或 WEC2013 并使用 HKLM\Loader\SystemPath,则必须在 SystemPath 变量中指定 DLL 的路径
  • 在项目属性页中设置源文件的位置:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多