使用 Process Explorer 查看 .NET Callstack

WinDbg 追查 CPU 飆高問題一文發表後,在 FB 收到網友 Webber Han 回饋(在此感謝),提到射茶包利器 Process Explorer 也能像 WinDbg 一樣檢視 Callstack 中的 .NET 組件、函式資訊,查了一下,這是 2012 年 15.2 版就加入的功能,Lag 大了。

關鍵在於「Configure Symbols」有無設定妥當,Process Explorer 的 .NET Callstack 解析也是借助 WinDbg 完成,故機器要先裝妥 WinDbg,開啟 Process Explorer 選單 Options / Configure Symbols… 將 Dbghelper.dll 改指向 WinDbg 的 dbghelper.dll,並比照 WinDbg 設定 Symbols path:

我寫了一支執行數十萬次 JsonConvert.SerializeObject 的 ASP.NET 程式當成測試對象。開啟 Process Explorer 找耗用大量 CPU 的 w3wp.exe,點兩下開啟 Properties,切換到 Threads 頁籤,找出佔用 CPU 最多的 Thread,點選 Stack:

此時 Stack 資訊可看出 ASP.hang_asp.Page_Load() 呼叫 HangTest.dll TestHelper.RunTest() ,RunTest() 呼叫 RunJsonTest(),其中再呼叫 JsonConvert.SerializeObject() 的呼叫關聯。

如此便能即時檢視執行中 .NET 程序的 Callstack,快速鎖定問題來源,在調查程式當住(Hang)問題時又多了一項選擇!

歡迎推文分享:
Published 28 February 2017 06:54 AM 由 Jeffrey
Filed under: ,
Views: 4,903



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2017>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication