我目前正在使用QtCreator 2.4.1和Qt 4.7.4开发库(在Ubuntu中),我正在尝试追踪一个错误,在使用valgrind进行概要分析后,似乎在QGraphicsView :: paintEvent(...)方法内部发生了
为了帮助隔离这个问题,我想进入Qt源代码。完成了对Qt论坛和堆栈溢出的一些搜索,并且无法找到将源与我的QtCreator版本集成的方法。
我目前尝试通过QtSDK管理器下载源代码,并在Tools-> Options-> Debugger中添加“源路径映射”。我确信这一步是我犯错误的地方,因为我在查看内部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文件中。这也行不通。
我完全迷失了。
保
答案 0 :(得分:6)
有人在此问了一个类似的问题:Need to step into Qt sources (my IDE is Qt Creator)。
其他人在此问及Qt的Valgrind错误:Suppression files for Qt memory leaks with Valgrind
这里有关于Using Valgrind with Qt Creator的更多信息以及有关如何阅读结果的一些解释。它有点落后于2010年底。
我不会调试QGraphicsView类只是因为所有努力使其工作或发现问题可能一无所获... Qt正在转向使用SceneGraph作为后端QML和QGraphicsView的渲染引擎可能已经过时了。
更新到Qt库的最新稳定版本可能会对QGraphicsView产生重大影响。
如果您发布了valgrind错误,那么您将转到Qt Trolls,有人可能会解释您的情况。
除传统调试器外,还有其他调试技术。我一直在Windows中的Qt编程(没有valgrind)和一个大型多线程应用程序,它加载了一堆Dll。我不得不对Object Tree Model清理工作投入一些信心并处理我输入的所有new
调用。大多数时候我只是使用QDebug来查找错误。然后我还使用qInstallMessageHandler()
和QDebug
的组合来实现难以跟踪的错误的正确日志记录。