BloggerAds

2014年10月1日 星期三

一個 Heap Debug 知道可以用卻沒注意到的小技巧,實在太重要了!


我們都知道微軟提供的 debug 工具包裡面有個 Global Flags 的工具,可以針對一些很特殊的狀況像是 heap、stack 相關的一些問題來與 debugger 配合偵錯,最近我工作處理的軟體就發生了 heap corruption,但因為它實在太肥大了,只要開啟了 Global Flags 之後,執行的速度就會慢到一個不可理喻,甚至原來的功能就不能動作了!

拜 G 大神的壞處是只要關鍵字不對,永遠也找不到想要的解答,這次在陰錯陽差之下,找到了一篇文章,裡面提到了我沒想到的功能啊!

一般狀況下我們會針對想偵錯 heap 的程式執行下列設定:
gflags -p /enable yourapp.exe /full

如果你們家的軟體跟我們家的一樣異常肥大,那就要試試下列這種用法了:
gflags -p /enable yourapp.exe /full /dlls yourdll.dll

用這個方法只會檢查你設定的 dll 所占用的 heap,範圍縮小了,自然程式的效率就好了!

實際測試這方法實在太適合我們家的軟體了,的確幫我找到一些問題點!
希望大家都可以在知道這個小技巧後瞬間提升偵錯的能力啊!哈哈!