Qt 斷言Q ASSERT的使用

2021-08-18 02:12:21 字數 963 閱讀 5756

半路出家,總是有太多東西需要學習,有太多問題需要解決。 ——【y忍冬草】

最近在寫完專案軟體後,雖然對於測試出的問題都很好的解決,但是總糾結於發布後出現問題怎麼辦?就檢視了一些關於斷言和異常處理的方法。

———以下為摘錄自博友

在使用qt開發大型軟體時,需要對程式進行除錯,以確保程式內的運算結果符合我們的預期。在不符合預期結果時,就直接將程式斷下,以便修改。

assert()是乙個除錯程式時經常使用的巨集,在程式執行時它計算括號內的表示式,如果表示式為false (0), 程式將報告錯誤,並終止執行。如果表示式不為0,則繼續執行後面的語句,它的作用是終止程式以免導致嚴重後果,同時也便於查詢錯誤。

qt中斷言函式有兩個:

(1)void q_assert(bool test)

當表示式為false時列印出警告訊息。

示例:#include

int main(int argc, char *argv)

結果:

編譯除錯,由於d不等於5,程式被斷言掉。

同時,程式給出斷言位置,為程式修改提供了便利。

(2)void q_assert_x(bool test, const char *where, const char *what)

當test為false時,列印警告資訊,警告資訊包含自定義資訊。

示例:#include

int main(int argc, char *argv)

結果:

這兩個斷言僅在沒有定義巨集qt_no_debug的情況下有效。

【參考:】

qt中Q ASSERT的使用

以下內容是參考部落格 以下內容是摘抄以上博主的部落格來進行分析的 在qt中有時候遇到問題,比較難定位的時候,就需要我們增加個斷言來定位 含義 在寫 的時候,難免會除錯程式,確保某乙個語句或運算結果符合預期,如果不是的話就將程式暫停,便於修改,那麼這時候就要用到乙個qt 中的除錯神器 q assert...

QT 自定義斷言

使用qt creator mingw gdb進行qt專案開發時,應用q assert進行斷言總是會出現問題 斷言失敗,程式崩潰而不是停止 採用自定義斷言能完美解決該問題 方法取自於國外論壇 自定義斷言 define iqs assert 2 if iqs assert 1 define iqsass...

assert(斷言)的使用

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用。這個概念可能不大好理解,想想vc下,除錯時有個選項,乙個是debug,乙個是release assert 表示式 的意思是 當表示式為真時,程式繼續執行,如果表達市為假,那程式就會...