qt處理程式異常崩潰

2021-08-15 10:17:29 字數 1392 閱讀 6800

程式難免會有異常崩潰的時候,重要的是在崩潰時能及時把重要的資料儲存好,將損失減少。

儲存資料僅是拯救措施,更重要的是找到錯誤的根源。若能在崩潰的同一時候,程式自己主動記錄下崩潰時的執行資訊,將有助於修正工作。微軟提供了「dbghelp」錯誤除錯技術。呼叫相關功能就可以儲存程式崩潰時的資訊,然後借助windbg軟體就能分析出當時的執行狀況。呼叫「dbghelp」的minidumpwritedump函式儲存以「.dmp」為字尾的dump檔案,該檔案能被windbg讀取並分析。

在標頭檔案裡包括「#include 」。

加入標頭檔案「#include 」,在pro檔案裡加入「libs += -ldbghelp」。目的是鏈結dbghelp庫。

/****儲存資料*****

*///建立 dump 檔案

handle hdumpfile = createfile(qtime::currenttime().tostring("hh時mm分ss秒zzz.dmp").utf16(), generic_write, 0, null, create_always, file_attribute_normal, null);

if( hdumpfile != invalid_handle_value)

//這裡彈出乙個錯誤對話方塊並退出程式

exception_record* record = pexception->exceptionrecord;

qstring errcode(qstring::number(record->exceptioncode,16)),erradr(qstring::number((uint)record->exceptionaddress,16)),errmod;

qmessagebox::critical(null,"程式崩潰","對於發生的錯誤,表示誠摯的歉意

"+ qstring("錯誤**:%1

").arg(errcode).arg(erradr),

qmessagebox::ok);

return exception_execute_handler;

}

int main(int argc, char *argv)

當被錯誤困擾得焦頭爛額的時候。若是老天能直接告訴錯誤在哪一行**該有多好呀。其實windbg就能做到。

在專案的proproject檔案裡增加:qmake_lflags_release = /incremental:no /debug

這句話的目的是release版也將生成「.pdb」字尾的除錯資訊檔案。在使用windbg匯入dump前。指定好源**與pdb檔案的位置。就可以在錯誤報告內看到罪魁禍首是哪一行**。

iOS崩潰 捕獲異常處理

之前部落格介紹啦一種異常捕獲後彈窗提示使用者的方法,ios崩潰 捕獲異常處理 下面提供另外一種異常捕獲的方法。原理一致,但實現略有不同。可供參考。1 在didfinishlaunchingwithoptions 中,註冊訊息處理函式,處理崩潰資訊,寫入本地。註冊訊息處理函式的處理方法,處理崩潰資訊,...

qt程式崩潰生成core dump

二 qt程式 1 qt程式的除錯過程與命令列大同小異,首先編寫崩潰程式如下 void mainwindow on checkbox toggled bool 當勾選checkbox的時候,程式崩潰 2 修改qt程式的makefile,在圖中位置增添 g引數,再進行編譯 2 這裡將程式設定成自啟動,在...

VC window程式崩潰處理

程式設計師有太多的學習點,接觸不到就是乙個盲點,今天看到c 在window下的崩潰處理。從此可以在程式崩潰時啟動自己的處理程式,或者友好的告訴使用者了。include stdafx.h include include for exception access violation include in...