每當我們分析掛起轉儲時,如果我們嘗試.exr -1,掛起的異常記錄
可以看到以下結果。
ExceptionAddress:000000 ExceptionCode:cfffffff(應用程序掛起)
.exr -1表示 「最後拋出的異常」。
誰在應用程序掛起時拋出異常。通常情況下,如果發生崩潰,系統會拋出一個異常,KiUserDispatch會捕獲它並繼續。
但發生掛起時會發生什麼?系統是否拋出異常?異常記錄來自哪裏?
每當我們分析掛起轉儲時,如果我們嘗試.exr -1,掛起的異常記錄
可以看到以下結果。
ExceptionAddress:000000 ExceptionCode:cfffffff(應用程序掛起)
.exr -1表示 「最後拋出的異常」。
誰在應用程序掛起時拋出異常。通常情況下,如果發生崩潰,系統會拋出一個異常,KiUserDispatch會捕獲它並繼續。
但發生掛起時會發生什麼?系統是否拋出異常?異常記錄來自哪裏?
程序中止不會產生任何異常,所以你必須檢查所有線程的調用堆棧,並試圖找出「誰是等待誰」
以下命令我幫你:
a)審查與業主鎖定所有堆棧
~*e ?? @$tid;kvn
b)列出關鍵部分疊加
!cs –l -o
你也可以試試DebugDiag做一個崩潰/掛分析
但OP顯示'.exr -1'在其輸出中顯示「Application Hang」。我想知道那是怎麼回事。 –
@Marc注意到空異常地址,這是無效的。 我不確定,但可能缺乏有效的異常記錄被解釋爲掛起。 誰知道? –
謝謝Kjell。我知道找出原因。我的問題是「這個例外記錄是從哪裏來的?」 ..什麼exr -1在內部? – user738471
有趣。你是如何產生轉儲的? –
只需使用.dump/ma X.dmp ...迷你轉儲...想知道異常記錄來自哪裏? – user738471
問題是如何生成轉儲。我的猜測是,它是由WER(Windows錯誤報告)生成的,如果您嘗試將UI事件發送到響應線程,那麼您可以選擇終止無響應的應用程序和崩潰轉儲,結果會產生這種情況作爲例外記錄。 – deemok