windbg
線程堆棧是如何增長的
摘要: 技術深了可以再深,從C++編譯器到CRT運行庫, 再到操作系統, 從用戶態到內核和驅動, 最后到硬件, 原理背后還有原理, 真正能掌握所有細節的又有幾人呢?
閱讀全文
posted @
2014-10-12 22:03 Richard Wei 閱讀(5474) |
評論 (3) 編輯
記一個界面刷新相關的Bug
摘要: 計算機的好處是它永遠不會欺騙你, 它只會按部就班的執行, 所以很多看似奇怪(甚至看似不可思議的問題), 只要你理解了程序背后的機制原理,都是可以找出根本原因的。
閱讀全文
posted @
2014-05-30 23:18 Richard Wei 閱讀(2696) |
評論 (2) 編輯
如何開發自己的調試器
摘要: 對系統原理和程序運行過程的理解,會熟練使用調試器是一個層次,能單獨開發調試器又是另外一個層次。
下面是一個不錯的系列,告訴你如何自己開發一款微型調試器
閱讀全文
posted @
2013-03-12 10:28 Richard Wei 閱讀(1994) |
評論 (0) 編輯
基于WinDbg的內存泄漏分析
摘要: 通過WinDbg結合AppVerifier, 我們可以詳細的跟蹤堆中new出來的每一塊內存。 很多時候在沒有源代碼的Release版本中,在程序運行一段時間后,如果我們發現有大內存或是大量同樣大小的小內存一直沒有釋放, 我們就可以用上面的方法進行分析和快速的定位問題。
閱讀全文
posted @
2013-02-27 14:35 Richard Wei 閱讀(18986) |
評論 (10) 編輯
理解程序內存
摘要: 通過上面的介紹,相信大家對程序內存有了比較全局的理解,以后大家分析問題,遇到一個地址,首先要判斷這個地址分布在哪里:
如果是Image上,那么是在哪個模塊中,這個地址是屬于該模塊的代碼段(.text)還是數據段(.data),如果是代碼段,又是屬于哪個函數?
如果是Heap上,那么究竟是在哪個堆里面,是我們new出來的嗎,是在什么時候new的(new時堆棧狀況)?
如果是在Stack上,那么究竟是屬于哪個線程的堆棧,當時線程的堆棧是怎么樣?
總之,程序在內存中運行,只有你真正理解了內存,你才能真正懂計算機。
閱讀全文
posted @
2012-09-19 23:24 Richard Wei 閱讀(6893) |
評論 (6) 編輯
如何學習WindDbg
摘要: 做為一名Windows平臺上的C/C++開發人員,我們有N個理由學習WinDbg的使用:
有些Bug只有在客戶和QA的機器上才能重現,我們不可能在他們的機器上裝一個VC吧
WinDbg可以讓我們方便的保存和分析Dump文件
WinDbg的調試功能比VC強大的多,比如它有強大的API斷點和條件斷點
調試內核和驅動,我們只能用WinDbg
用WinDbg可以讓你更深入的理解系統,理解計算機,用VC你看到的是自己的代碼,用WinDbg你看到的是整個進程
......
最重要的,微軟用WinDbg開發和調試Windows操作系統,它是Windows平臺上最重要的調試工具.
閱讀全文
posted @
2012-08-15 14:12 Richard Wei 閱讀(4553) |
評論 (6) 編輯
跨模塊傳參數的教訓
摘要: 今天遇到一個比較奇怪的crash問題,這里記錄下。這個crash是由QA設置了一些不合理的參數引起的,還好QA當時保存了Dump文件,讓我們可以慢慢分析,從而找出代碼中隱藏的問題。
閱讀全文
posted @
2012-07-13 21:27 Richard Wei 閱讀(3915) |
評論 (4) 編輯
用Windbg解決一個Bug
摘要: 可以看到無論對于開發還是測試人員,windbg很多時候可以幫我們快速的定位問題, 如果借助符號文件,Windbg完全可以實現比VC IDE更強大的調試供功能, 并且有時候我們不需要源代碼,不需要重新編譯,直接就可以通過windbg調試和解決問題。
閱讀全文
posted @
2012-06-26 20:33 Richard Wei 閱讀(3727) |
評論 (3) 編輯
Windbg實用手冊
摘要: Windbg的命令分為標準命令,原命令和擴展命令,輸入問號(?)可以顯示所有的標準命令的幫助信息; 元命令以一個點(.)開始,輸入.help可以顯示所有的原命令的幫助信息;擴展命令以嘆號(!)開始
閱讀全文
posted @
2012-06-07 19:07 Richard Wei 閱讀(23080) |
評論 (1) 編輯