我的Visual C++應用程序使用/ EHA選項編譯,讓我捕獲結構化異常(除以零,訪問衝突等)。然後,我使用_set_se_translator()將這些異常轉換爲我自己的異常類。我的目標是改進對這些類型例外的記錄。獲取有關結構化異常的詳細信息
我可以從EXCEPTION_RECORD結構中獲取異常的類型和異常地址。我希望能夠收集更多信息,例如引發異常的源文件/位置,調用堆棧等。這可能嗎?
我確實在結構化異常上創建了一個異常小型轉儲 - 是否有一種工具可以自動從中獲取調用堆棧?
我的Visual C++應用程序使用/ EHA選項編譯,讓我捕獲結構化異常(除以零,訪問衝突等)。然後,我使用_set_se_translator()將這些異常轉換爲我自己的異常類。我的目標是改進對這些類型例外的記錄。獲取有關結構化異常的詳細信息
我可以從EXCEPTION_RECORD結構中獲取異常的類型和異常地址。我希望能夠收集更多信息,例如引發異常的源文件/位置,調用堆棧等。這可能嗎?
我確實在結構化異常上創建了一個異常小型轉儲 - 是否有一種工具可以自動從中獲取調用堆棧?
調用堆棧和所有其他的異常信息,請使用轉儲驗屍調試:
http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx
AFAIK,在這個地方產生堆棧信息記錄不.pdb文件是不可能的。通常.pdb文件未安裝在客戶端計算機上。
我的一個想法是在一些不同的線程中使用不同的翻譯器函數(每個線程有一個翻譯器函數),所以我可以知道從哪個線程拋出了結構化的異常。
這不太實際,因爲你不能傳遞任何參數給翻譯器函數,所以你需要一堆不同的翻譯器函數。