在Qt Creator中调试断言

时间:2010-01-21 09:08:51

标签: c++ qt qt-creator

当我在使用Visual Studio进行调试时遇到正常的断言语句时,我可以选择进入调试器,这样我就可以看到整个堆栈跟踪和局部变量,而不仅仅是断言消息。

是否可以使用Qt Creator + mingw32和Q_ASSERT / Q_ASSERT_X执行此操作?

3 个答案:

答案 0 :(得分:20)

这是可能的。不知何故,该功能停止了我的工作,但基本上你想要的是停在qFatal()上。 为了确保这一点,请在qt Creator中转到工具 - >选项 - >调试器 - > GDB并选择 “发布qFatal时停止”

答案 1 :(得分:7)

您可以为Qt发出的消息/警告安装处理程序,并自行处理它们。请参阅qInstallMsgHandler的文档及其提供的示例。在自定义消息处理程序中插入一个中断应该很容易(或者实际上,只需在此时断言)。一个小的缺点是你在堆栈上的位置比错误实际发生的位置更远,但只需升级堆栈直到你处于正确的框架是一件简单的事情。

答案 2 :(得分:2)

这是可能的。我已经手动编写了一个BreakInDebugger函数和一个调用该函数的断言宏。

例如:#define MyAssert(X) (BreakInDebugger();Q_ASSERT(X))