天天看點

[原創]DebugTools系列(4):AQTime經驗總結

導讀這篇文章是AQTime系列的最後一篇,主要介紹一些實用的技巧,因為作者也是初學乍練,我已經将我所知道的都寫出來跟大家分享了!關于AQTime,沒有涉及到的肯定還很多,至少我還沒有完整看完那份400多頁的使用手冊,相信裡面還有很多知識點這個系列都沒有覆寫到,不過沒關系,我也是在“ I try to learn things is by "teaching"”,是以強烈希望熟悉AQTime的朋友如果正巧路過,留下您的寶貴經驗跟大家分享,也非常歡迎AQTime的菜鳥沒把你的疑問和困惑提出來,大家一起解決。

[原創]DebugTools系列(4):AQTime經驗總結

記得留下寶貴意見哦!!!

那麼這個時候我們怎麼辦?我們怎麼才能輕松準确地加載最合适的Modules呢?這個Tip就是為了究竟這個問題的,那就是利用AQTime的[Event View]頁簽記錄的值,找到你需要的Modules,[Event View]裡會記錄程式整個生命周期加載的所有Modules,包括作業系統、架構和程式自身,而且在[Event View]可以直接檢視到這些Modules的本地完整絕對路徑。說到這裡,想必大家已經基本都清楚了吧,要做的就是再AQTime裡空跑(至少要加載一個Module)一次完整的你要收集資料的過程,然後去[Event View]裡把你需要的Modules挑出來即可,如果覺得在[Event View]裡檢視不友善,可以通過右鍵[Save All...]将[Event View]的結果儲存為一個HTML檔案後再檢視,這樣會友善很多。

[原創]DebugTools系列(4):AQTime經驗總結

參考上圖,看看我們找到了什麼,是的,這些就是我們在第一篇文章裡就提到過的由ISAPI動态生成的aspx檔案對應的類的DLL,這些真是我們需要的,保證準确無誤的Modules了!

OK!這個Tip還要從我的一次糗事說起,前段時間大面積調試性能,我一次要收集大約15個功能點的性能問題,都是訂單體要求100行大資料量的,本來我們的訂單就很大,運作性能已經不是很理想了,如果還是100行的,再加上同時挂上AQTime,還是用我自己的P4 2.6的破機器做伺服器,結果就慢的要急死人了,平均每個功能點收集一次需要25分鐘以上。是以那天我一上午隻收集了大約5個功能點的性能資料,午飯後沒有睡午覺,跟同僚PK了一會兒街霸對拳皇,就繼續收集其他功能的,下午人都有點犯困,警惕性不高,大約收集到第10個功能點時,突然發現[Last Results]清單裡為什麼隻有五組結果呢?上午做的東西都哪去了?!在暈菜了半天以後,最後找到了原因:AQTime預設隻能在[Last Results]裡儲存最近五次的結果資料,第六次的會自動覆寫第一次的,如此反複,也就是說,我下午暈暈的時候,把上午的辛勤勞動果實就那樣覆寫掉了!簡直太糗了!最後反複确認,被覆寫掉的東西是找不回來的,那些資料隻能重新收集一遍了!

[原創]DebugTools系列(4):AQTime經驗總結

如上圖所示,在AQTime裡是可以通過Panel Options裡的"Number of recent results to keep"來設定這個預設值的,是以請大家記住,安裝完AQTime以後,記得先把這個值設定大一些,比如100應該足夠了!

[原創]DebugTools系列(4):AQTime經驗總結

如上圖所示,另一個防止收集結果資料丢失的方法是每次收集完,确認結果有效且需要保持下來備用的,可立即使用右鍵菜單裡的"Move to Saved Results"将結果儲存到[Saved REsults]分組裡即可,或者使用"Save to File..."儲存成單獨的aqr檔案,這樣最保險!

[原創]DebugTools系列(4):AQTime經驗總結

一般情況下,如果是調試階段的性能測試,且你加載的Module是在你的本地環境上編譯的,也就是說通過Module(一般指DLL或exe),AQTime可以根據其中繼資料資訊自動找到本地的源代碼并自動顯示在[Editor]頁簽裡,并且跟Grid清單焦點行上的方法自動同步對應。這是一個非常重要且實用的功能,因為在我們分析性能資料的時候,當你懷疑某個地方有地雷的時候,隻要打開[Editor]頁簽就可以直接看到源代碼了,這簡直是太友善了。

不過有時,還是經常會出現無法正常檢視源代碼的情況,這時主要檢查這幾個方面:

1、Grid清單焦點行上的方法是底層架構的或其他你無法獲得源代碼的,那麼檢視不到就是正常現象了!這時倒是可以通過[Disassembler]頁簽檢視反彙編的結果,不過這個看起來肯定是沒那麼舒服了。

2、如果你隻是在一個空項目裡加載一個别人共享的aqr檔案,那麼這個時候你可以把能加載的Module都加載上,就可以自動定位到大部分源代碼了,因為aqr檔案裡隻記錄了方法名和其各種性能資料結果,它需要通過已經加載的Module去關聯源代碼才行。

3、通過設定"Search Directories..."定位到源代碼的位置,有時候因為你加載的Module裡記錄的源代碼路徑不一定跟你本地環境的完全相同,而你确實還有這個Module的源代碼,那麼就需要通過設定查找路徑的方式來定位到源代碼了,具體請參考下圖:

[原創]DebugTools系列(4):AQTime經驗總結

AQTime在安裝的時候,會提示是否作為PlugIn關聯到Visual Studio環境,如果安裝了,那麼在VS的ToolBar裡就會多出一個Profiler菜單,通過這個菜單,可以進入一個完全嵌入在VS IDE環境中的AQTime環境,用法跟單獨打開的AQTime沒什麼差別,暫時我們感覺到的最大的差別就是沒有[Editor]頁簽,在Grid清單上輕按兩下某個方法,如果是目前項目的,就會自動定位到對于的檔案上,這樣檢視和修改源代碼确實會比較友善,其他就沒什麼感覺了,具體可參考下面的圖示。

[原創]DebugTools系列(4):AQTime經驗總結
[原創]DebugTools系列(4):AQTime經驗總結
[原創]DebugTools系列(4):AQTime經驗總結

-歡迎加入部落格園.Debug探索團隊 Copyright © Justin

本文轉自Justin部落格園部落格,原文連結:http://www.cnblogs.com/justinw/archive/2008/10/30/1320800.html,如需轉載請自行聯系原作者

繼續閱讀