10

我目前正在将 QtCreator 2.4.1 与 Qt 4.7.4 开发库(在 Ubuntu 中)一起使用,并试图追踪一个在使用 valgrind 进行分析后似乎发生在 QGraphicsView::paintEvent(...) 方法内部的错误

为了帮助隔离这个问题,我想进入 Qt 源代码。通过 Qt 论坛和堆栈溢出进行了一些搜索,但无法找到将源代码与我的 QtCreator 版本集成的方法。

我目前尝试通过 QtSDK 管理器下载源代码,并在 Tools->Options->Debugger 中添加“Source Path Mapping”。我确信这一步是我犯错误的地方,因为在查看内部 Qt 头文件(即来自 QGraphicsView.h)时我什至无法切换到源代码

到目前为止,我已尝试添加以下源路径映射

Source Path=/var/tmp/qt-src TargetPath=/home/paul/QtSDK/QtSources/4.7.4

Source Path=/var/tmp/qt-src TargetPath=/home/paul/QtSDK/QtSources/4.7.4/src

两者都不起作用。

我还尝试直接从源代码构建 Qt,将其添加到 Qt Creator 中的“Qt 版本”列表中,并使用此版本创建新的项目配置。这也没有奏效。

同样,我尝试将 src 文件夹添加到我的 gdbinit 文件中。这也行不通。

我完全迷失了。

保罗

4

1 回答 1

6

这里有人问了一个类似的问题:Need to step into Qt sources (my IDE is Qt Creator)

其他人在这里询问有关 Qt 的 Valgrind 错误:Suppression files for Qt memory leaks with Valgrind

这里有一些关于使用 Valgrind 和 Qt Creator的更多信息以及一些关于如何读取结果的解释。它有点过时于 2010 年末。

相关建议

  • 我不会调试 QGraphicsView 类,只是因为努力让它工作或发现问题可能是徒劳的...... Qt 正在转向使用SceneGraph作为 QML 的后端,而 QGraphicsView 的渲染引擎可能会过时.

  • 更新到 Qt 库的最新稳定版本可能会对 QGraphicsView 产生重大影响。

  • 如果您将 valgrind 错误发布到Qt Trolls,有人可能会为您解释发生了什么。

  • 除了传统的调试器,还有其他的调试技术。我一直在 Windows 中的 Qt 中编程(没有 valgrind)和一个大型多线程应用程序,它加载了一堆 Dll。我不得不对对象树模型的清理工作抱有信心,并处理我输入的所有new调用。大多数时候我只是使用 QDebug 来查找错误。然后,我还结合使用qInstallMessageHandler()withQDebug来实现体面的日志记录,以解决难以跟踪的错误。

另请参阅Qt 调试技术

于 2012-06-03T06:04:44.177 回答