2012-05-14 87 views
2

我們對我們的應用程序有例外。使用Dr.Watson,我們沒有捕獲任何dmp以及日誌文件。我被告知,WinDbg是在程序異常/崩潰時創建轉儲文件的替代方法。谷歌搜索後,我遇到了一堆混亂。首先,我想確認是否有可能在WinDbg的幫助下創建轉儲文件。其次,是否有任何推薦的簡單命令行將WinDbg附加到應用程序以在崩潰時獲取轉儲文件?非常感謝!WinDbg在崩潰時創建轉儲文件?

+0

FYI:不足轉儲文件的最可能的原因從沃森博士並未將堆作爲轉儲的一部分。你應該考慮啓用那個麻煩的錯誤 – JaredPar

+0

@JaredPar我不明白你的建議。通常Dr.Watson中的選項包括:「轉儲符號表」,「轉儲所有線程上下文」... – user1154138

+0

我從來沒有真正使用過沃森博士的管理員端,我只是消費了結果:)。 – JaredPar

回答

1

如果你可以攔截在異常處理程序崩潰,那麼你可以使用代碼寫入轉儲: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680360%28v=vs.85%29.aspx

否則,您需要指示華生醫生給您指定特定標誌攔截和創建轉儲詳細程度的轉儲將舉行:

cdb -pn myApp.exe -c ".symfix;.reload;.dump /ma c:\memdump\crash.dmp;qd" 
01: http://blogs.technet.com/b/askperf/archive/2007/06/15/capturing-application-crash-dumps.aspxhttp://social.technet.microsoft.com/wiki/contents/articles/8103.application-crash-dump-analysis-windows-7.aspxmsdn

要從你需要做類似的命令行做到這一點

這假設的Cdb.exe路徑搜索,您可能需要使用像完整路徑前綴:

C:\Program Files (x86)\Debugging Tools for Windows (x86)\cdb -pn myApp.exe -c ".symfix;.reload;.dump /ma c:\memdump\crash.dmp;qd" 

所以這裏

cdb -pn -->attaches cdb to your process name myApp.exe 
-c  -->execute command 
.symfix -->fix microsoft symbols 
.reload -->reload 
.dump /ma c:\memdump\crash.dmp --> write minidump to location (the flags /ma is effectively everything you want) 
qd  -->quit and detach 

命令你可能並不需要一些命令,你可以刪除它們,如果不需要。

+0

非常感謝。命令行是否在崩潰時捕獲轉儲文件? – user1154138

+0

這是將附加並執行內存轉儲的命令,但如果您檢查鏈接,仍需要在註冊表中設置處理程序 – EdChum

2

在這種情況下,我們通常建議我們的用戶下載procdump(這正好可以從zip文件中提取,無需安裝),然後我們給他們一個包含這樣的一個批處理文件:

mkdir c:\dumps 
procdump -e -c 10 -w myprocess.exe c:\dumps 

當過程產生未處理的異常會造成在c:\dumps目錄,你可以加載到Visual Studio或WinDBG的轉儲文件(!analyze -v命令是你的朋友)