2010-01-21 52 views
18

當我在使用Visual Studio進行調試時碰到正常的聲明語句時,我可以選擇打開調試器,以便我可以看到整個堆棧跟蹤和本地變量,而不僅僅是斷言消息。在Qt Creator中調試聲明

是否可以使用Qt Creator + mingw32和Q_ASSERT/Q_ASSERT_X來做到這一點?

回答

7

您可以安裝的消息/警告的處理程序Qt所發出,並做他們的自己的處理。請參閱qInstallMsgHandler的文檔以及他們在那裏給出的示例。應該很容易在自定義消息處理程序中插入一箇中斷(或者確實,在這一點上只是自行斷言)。一個小缺點是,你會比在實際發生錯誤的位置更靠近堆棧的位置,但是在堆疊到適當的位置之前,只需加緊堆棧就簡單了。

+3

我中止之前使用__asm(「INT3」)的例子( )電話,它很好。 – 2010-01-21 23:28:31

2

這是可能的。我用手編寫了一個BreakInDebugger函數,並調用了一個調用該函數的宏。

e.g:#define MyAssert(X) (BreakInDebugger();Q_ASSERT(X))

16

這是可能的。不知何故該功能停止對我工作,但基本上你想要停止在qFatal()。 爲了確保這種情況發生,Qt Creator中去工具 - >選項 - >調試 - > GDB並選擇 「停止時qFatal發出」

+0

看起來像正確的選項(它爲什麼不默認?),但它似乎並沒有爲我工作。 – 2014-09-16 18:57:31

+1

配置窗格在Qt Creator 5.3中被稱爲「GDB Extended」,可能更晚。 – 2017-08-05 13:49:17

+0

爲我工作:Qt Creator 5.3(32)+ Qt庫5.9(64)+ MSYS2/MinGW(64)。 – 2017-08-05 13:55:08