軟體Release 版本 Crash 堆疊資訊收集

2021-04-20 00:01:45 字數 1388 閱讀 2974

軟體release 版本 crash 堆疊資訊收集

比較詳細的位址是:http://www.codeproject.com/debug/xcrashreportpt3.asp

不過作者考慮了沒有vc等情況。

其實如果有vc使用ms 的 minidumpwritedump 將會非常簡單. 如下面100行左右搞定,理解、轉換為unicode 編碼都簡單很多.只需要裝入相應的標頭檔案即可記錄crash dump 檔案。用vc開啟dump 檔案。按f5即可執行到crash地點

vc release 工程必須設定:

鏈結器 ->除錯-> 生成除錯資訊 是(/debug)

鏈結器->優化->引用->消除未引用資料(/opt:ref)

標頭檔案 minidump.h

#pragma once

#include

#include

#if _msc_ver < 1300

#define declspec_deprecated

// vc6: change this path to your platform sdk headers

#include "c://dev7//vs//devtools//common//win32sdk//include//dbghelp.h"            // must be xp version of file

#else

// vc7: ships with updated headers

#include "dbghelp.h"

#endif

// based on dbghelp.h

#include "minidump.h"

#include

#include

#include

// firstly see if dbghelp.dll is around and has the function we need

// look next to the exe first, as the one in system32 might be old

// (e.g. windows 2000)

hmodule hdll = null;

tchar szdbghelppath[_max_path];

if (getmodulefilename( null, szdbghelppath, _max_path ))

}if (hdll==null)

lpctstr szresult = null;

if (hdll)

else

::closehandle(hfile);

}else}}

else

}else

return retval;

}

使用gdb除錯release版本軟體

下發給測試部測試的軟體,以及產品發布的軟體都是不帶除錯資訊的release版本 release版本軟體執行速率比debug版本的程式要快,但出了問題由於沒有除錯資訊,不利於問題的分析,特別是在一些售後問題中比較明顯。smh ps elf grep netlink 4 s root 3698 1 0 ...

release版本和debug版本

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用 release和 debug 有什麼不同 release版稱為發行版,debug版稱為除錯版。debug中可以單步執行 跟蹤等功能,但生成的可執行檔案比較大,執行速度較慢。rele...

debug版本和release版本

執行 debug版本輸出結果 仔細觀察,可以發現release版本的結果中,a與c的值差為4,debug版本的結果中,a和c的結果直差為8.為什麼?四個位元組被優化掉了。32位系統 呼叫函式是通過棧來傳遞引數,我們列印的位址實際上是在棧裡面位置的位址 64位系統 函式傳參絕大多數不同通過棧來傳輸的,...