有人問我要一個呼叫堆疊或者堆疊追蹤一個正在運行的進程,以便他可以為我分析它。
我怎樣才能得到這些資訊?
答案1
得到流程瀏覽器。
使能夠顯示所有進程的詳細信息來自文件菜單:
在主窗格中,選擇您感興趣的流程:
開啟所選進程的上下文功能表(右鍵單擊),然後按一下特性:
上執行緒數選項卡,您將能夠看到該進程內正在運行的執行緒的清單:
選擇您感興趣的主題並點擊堆疊按鈕:
Process Explorer 現在將顯示所選執行緒的目前呼叫堆疊:
符號
如果您的故障排除需要獲得更多詳細信息,加載調試通常非常有幫助符號進入 Process Explorer。方法如下:
如果您尚未安裝 Windows 偵錯器,則必須安裝Windows 偵錯工具第一的。
在流程資源管理器中,開啟配置符號...來自選項菜單:
如果您安裝了偵錯工具(或其他 Windows 偵錯器),Process Explorer 將自動查找該
dbghelp.dll
檔案。否則,請在此處設定正確的路徑。這符號路徑應該看起來像:
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
您唯一需要調整的部分是
C:\Symbols
.這是調試符號將被緩存的位置。
答案2
如果你需要clr進程的堆疊,你可以使用ProcInsp(我是它的開發者,該工具是免費使用的)。
- 安裝過程檢查
- 找到您感興趣的流程並點擊它
- 點擊線程(請注意,ProcInsp 將應用程式的入口點顯示為線程的名稱 - 它會跳過 .net 基礎結構的所有幀)
- 顯示突出顯示入口點的堆疊追蹤