Windows 桌面應用程式無回應且無 Crash Report 時,如何擷取 Dump 並排查死鎖與資源爭用?

Yang Ning HK 80 信譽點數
2026-10-15T09:03:34.5266667+00:00

當 Windows 桌面應用程式出現無回應(凍結)但未有自動關閉或產生 Crash Report 時,我們如何透過 Windows 工作管理員(Task Manager)或 ProcDump 擷取完整的進程 Dump(Process Dump),並利用 WinDbg 分析以識別死鎖(Deadlock)、卡死的線程(Blocked Threads)、資源爭用(Resource Contention)或無回應的相依性服務(Unresponsive Dependencies)?

Windows for business | Windows 365 商務版
0 則留言 沒有留言

2 個回答

排序依據: 最實用
  1. 熱情熄 心冷 5,485 信譽點數
    2026-10-15T11:34:42.2133333+00:00

    我比較偏好用 Microsoft Sysinternals Process Monitor 看每一資源存取了甚麼

    此回答有幫助嗎?

    0 則留言 沒有留言

  2. Harry Phan 34,365 信譽點數 獨立顧問
    2026-10-15T09:22:04.6633333+00:00

    您好,

    當 Windows 應用程式凍結且未產生崩潰報告時,請在應用程式無回應時擷取進程轉儲。開啟任務管理器,導覽至“詳細資料”,以滑鼠右鍵按一下受影響的進程,然後選擇“建立轉儲檔案”;Windows 將顯示已儲存的檔案路徑。或者,下載「Microsoft Sysinternals ProcDump」,並以管理員身分執行命令提示字元。執行“procdump.exe -ma <PID> C:\Dumps\app_hang.dmp”,確保目標資料夾存在。若要在視窗停止回應時自動擷取轉儲,請使用“procdump.exe -ma -h <ProcessName.exe> C:\Dumps”。間隔幾秒鐘收集兩到三個轉儲,以識別持續阻塞的線程。在 WinDbg.

    中開啟轉儲文件,並執行 .symfix、.reload、!analyze -hang 和 ~* kb 指令來檢查執行緒狀態和呼叫堆疊。尋找循環鎖定依賴、臨界區等待、RPC 或 COM 呼叫以及阻塞的網路或檔案操作。對於 .NET 應用程序,請使用 SOS 命令(例如 !threads 和 !syncblk)來調查託管執行緒阻塞和同步爭用。將轉儲結果與應用程式日誌和 Windows 事件檢視器進行對比,並保護轉儲文件,因為它們可能包含敏感資訊。

    希望這些資訊對您有所幫助。如果此答案能幫助您更深入地了解問題,請採納。如果您還有其他問題,歡迎留言。祝您一切順利!

    HP.

    此回答有幫助嗎?

    0 則留言 沒有留言

您的回答

答案可由問題作者標示為「已接受」,而由仲裁者標示為「推薦」,這可協助使用者知道答案解決了作者的問題。