在Qt Creator中调试断言

Dan*_*dei 21 c++ qt qt-creator

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

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

Gus*_*sky 24

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

  • 配置窗格在Qt Creator 5.3中称为"GDB Extended",可能稍后. (3认同)

Cal*_*itt 8

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

  • 我在abort()调用之前使用了带__asm("int3")的示例,它运行得很好. (3认同)