如何查看正在運行的進程/執行緒的呼叫堆疊?

如何查看正在運行的進程/執行緒的呼叫堆疊?

有人問我要一個呼叫堆疊或者堆疊追蹤一個正在運行的進程,以便他可以為我分析它。

我怎樣才能得到這些資訊?

答案1

  1. 得到流程瀏覽器

  2. 使能夠顯示所有進程的詳細信息來自文件菜單:

    在此輸入影像描述

  3. 在主窗格中,選擇您感興趣的流程:

    在此輸入影像描述

  4. 開啟所選進程的上下文功能表(右鍵單擊),然後按一下特性:

    在此輸入影像描述

  5. 執行緒數選項卡,您將能夠看到該進程內正在運行的執行緒的清單:

    在此輸入影像描述

  6. 選擇您感興趣的主題並點擊堆疊按鈕:

    在此輸入影像描述

  7. Process Explorer 現在將顯示所選執行緒的目前呼叫堆疊:

    在此輸入影像描述

符號

如果您的故障排除需要獲得更多詳細信息,加載調試通常非常有幫助符號進入 Process Explorer。方法如下:

  1. 如果您尚未安裝 Windows 偵錯器,則必須安裝Windows 偵錯工具第一的。

  2. 在流程資源管理器中,開啟配置符號...來自選項菜單:

    在此輸入影像描述

  3. 如果您安裝了偵錯工具(或其他 Windows 偵錯器),Process Explorer 將自動查找該dbghelp.dll檔案。否則,請在此處設定正確的路徑。

    在此輸入影像描述

    符號路徑應該看起來像:

    SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
    

    您唯一需要調整的部分是C:\Symbols.這是調試符號將被緩存的位置。

答案2

如果你需要clr進程的堆疊,你可以使用ProcInsp(我是它的開發者,該工具是免費使用的)。

  1. 安裝過程檢查
  2. 找到您感興趣的流程並點擊它 行程清單
  3. 點擊線程(請注意,ProcInsp 將應用程式的入口點顯示為線程的名稱 - 它會跳過 .net 基礎結構的所有幀) 線程列表
  4. 顯示突出顯示入口點的堆疊追蹤 堆疊追蹤

相關內容