如何在调试过程中看到Qt对象的内容?

时间:2009-10-20 20:14:09

标签: windows visual-studio debugging qt

许多Qt类使用pimpl,因此它们对VS的调试器非常不透明。

当我想检查一些内部Qt状态以查看我的代码是否出错或者我对错误的预期有错误时,这很麻烦。

我正在使用Qt VS插件(1.1.0),但这似乎没有帮助。

有什么想法吗?

更新

我的autoexp.dat文件中填充了Qt的东西,但是我仍然无法查看较重的类(QWidget,QTcpSocket等)。

我可以看到更简单的类内容,所以下面的autoexp.dat似乎正在工作,但试图查看QWidget内部不起作用。

更新2

出于某种原因,在阅读评论并查看更多信息后,它确实有效,我可以看到数据。

我不知道平均时间发生了什么(当我刚刚工作并忽略它时),但我之前看到数据时遇到了问题。

我接受“正常工作”的答案,因为我无法删除一个有价值的问题,而这是最接近的答案。 (autoexp-dat只是很好地格式化调试行,使用已经可见的数据,如果有人挖掘的话)

5 个答案:

答案 0 :(得分:3)

这可能会有助http://daniel-albuschat.blogspot.com/2008/02/qt-debugging-with-visual-studio-2005.html

IIRC安装Qt for Windows包含一个autoexp.dat文件 -
更正,它是qt-vs-addin

的一部分

答案 1 :(得分:1)

您需要为调试器添加自定义转储程序。

GDB预先构建了一些。你可能不得不为其他调试器自己动手,但对于visual studio,通过调整autoexp.dat文件可以很容易地得到一些不错的结果。有很多资源可以在线获取如何更改此文件。

答案 2 :(得分:1)

编辑autoexp.dat是一个选项。有关一组可视化工具,请参阅http://eecs.vanderbilt.edu/research/hmtl/wiki/pmwiki.php?n=Knowledge.Qt

答案 3 :(得分:0)

好像你可能运气不好。

目前此页面包含可以添加到autoexp.dat的QT wariables最完整的宏列表: QT with Visual Studio 2008 (updated for Qt 4.5.2)

ActiveQt听起来也很有希望,但对你来说可能有点矫枉过正。

除此之外,您还必须滚动自己的表达式,或者编写Visual Studio Debugger Visualizer。 (更多信息请参见CodeProjectMSDN

由于没有那样的东西,它可能是从头开始开发的好机会。 :)

答案 4 :(得分:-1)

当使用调试信息编译Qt时,绝对可以查看pimpl。不确定VS,但使用gdb,Just Works™。