使用windbg分析dmp查詢程式崩潰問題

2021-10-05 04:48:15 字數 1717 閱讀 1325

#include

#pragma comment(lib, "dbghelp.lib")

#define dmp_file_path "d:\\mydmp"

long winapi myunhandledexceptfiltercallback

(struct _exception_pointers * lpexceptioninfo)

; systemtime currenttime;

::getlocaltime

(¤ttime)

;sprintf

(strdumpfile,

"%s\\%02d-%02d-%02d.%03d.dmp"

,dmp_file_path,

currenttime.whour,

currenttime.wminute,

currenttime.wsecond,currenttime.wmilliseconds)

; handle hdumpfile =

createfile

(strdumpfile, generic_write,0,

null

, create_always,file_attribute_normal ,

null);

//if

(hdumpfile!=

null

)return exception_execute_handler;

//表示我已經處理了異常,可以優雅地結束了

}bool preventunhandledexceptfilter()

; dword dworgentryaddr =

(dword) pexceptfun;

dworgentryaddr +=5

;// add 5 for 5 op-codes for jmp far

void

*pnewfunc =

&myunhandledexceptfiltercallback;

dword dwnewentryaddr =

(dword) pnewfunc;

dword dwrelativeaddr = dwnewentryaddr - dworgentryaddr;

newjump[0]

=0xe9

;// jmp absolute

memcpy

(&newjump[1]

,&dwrelativeaddr,

sizeof

(pnewfunc));

size_t byteswritten;

bool bret =

writeprocessmemory

(getcurrentprocess()

, pexceptfun, newjump,

sizeof

(pnewfunc)+1

,&byteswritten)

;return bret;

}static

void

setexcepthook()

//程式初始化的時候呼叫該函式即可

file->symbol file path

設定pdb檔案路徑,若是有本地編譯生成的可不設定,會自動搜尋;(必須有生成的pdb檔案否則無法分析)

開啟指定dmp檔案

輸入指令!analyze -v 即可分析,等待分析需要一段時間。

windbg 分析dmp 之一

1.ctrl d開啟dmp 或者直接把dmp拖到視窗 2.ctrl s輸入 一般是拷貝 符號檔案位址,alt r勾選reload選項,enter 3.symchk,檢查符號 4.lm,核對符號 5.kb,顯示堆疊 6.如果顯示的是ntdll dbgbreakpoint 哎,已經不是第一現場 接著看7...

使用windbg分析dmp檔案定位程式bug

本文編寫了乙個簡單能產生除數為0異常的程式,讓其執行,產生崩潰,通過drwtsn產生dmp檔案,然後通過windbg分析dmp檔案,定位程式bug。目的 學習windbg基本功能使用。程式源 void crash void void main void 編譯環境 vc 6.0 編譯器設定 這一步設定...

使用WinDbg分析死鎖

using system using system.threading private void test1 start console.readkey console.writeline exit test1 private void test2 0 000 e clrstack os threa...