2011-05-20 97 views
2

運行3-4天后,我的應用程序偶爾會在客戶機器上崩潰。當應用程序啓動時,是否可以將應用程序自動附加到像ADplus這樣的調試器?這用於在應用程序崩潰時生成轉儲文件。崩潰生成轉儲

+1

相關:http://stackoverflow.com/questions/5224154/application-crash-with-no-解釋/ 5224518#5224518 – 2011-05-20 14:14:30

回答

1

既然您想使用ADPlus,我假設一個僅Windows的解決方案將做到這一點。
在這種情況下,您可以安裝事後調試器。只要你的應用程序崩潰,它就會彈出。我通常使用windbg。

0

IMO在進程啓動時不必附加到調試器。的Windows會尋找一個調試進程終止時和設置的AeDebug的RegistryKey

在x86計算機的位置是\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

CDB可以設置爲事後調試

要改變事後調試器運行cdb -iae或cdb -iaec KeyString。當使用-iaec參數 時,KeyString指定一個字符串 被附加到命令行 的末尾,用於啓動事後調查器 調試器。如果KeyString包含 空格,則必須用引號括起 。如果 成功,則此命令將顯示無消息,但如果 失敗,則 將顯示失敗消息。當CDB是事後調查器 調試器時,每當應用程序崩潰時它將被激活 。

我會得到類似cdb -iaec ".dump /ma /u crashedapp.dmp;q"的東西,以便在進程終止時獲得內存轉儲。

如果操作系統是Vista的SP1 +則註冊表可以配置爲使用獲得WER http://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx完全內存轉儲