2013-05-28 91 views
7

我仍然是一個C++相對新手,我遇到了第三方DLL的問題,我靜態鏈接到我的本機C++ DLL。我正在使用Visual Studio 2012來調試我的DLL。WinDbg能告訴我Visual Studio不能做什麼?

(FWIW,第三方DLL這是Sybase Open Client中,和我通過一個C#可執行文件我已經寫了,它動態地加載我的C++ DLL調試我的DLL。)

我用視覺Studio進入反彙編過程並查看第三方DLL的寄存器和內存使用情況。 Visual Studio給了我很多有關我的過程中發生的事情的良好信息,但是我覺得可能有更多的信息比我所看到的更多,並且可能是更容易或更有效的方式。

我讀過WinDbg是一個非常強大的工具,但需要花費相當多的時間和精力來學習如何使用它。我的問題是:學習使用WinDbg是值得的,還是Visual Studio中的調試工具會給我提供幾乎相同的信息?

+6

嘗試在Visual Studio調試器的某個時間走過Windows堆。然後用WinDbg取得成功*。 – WhozCraig

+1

WinDbg腳本與其語法一樣神祕,與VS允許的功能相比可以是強大的,儘管也許使用插件或宏,您可以在VS中獲得類似的功能。 – 0xC0000022L

+5

內存泄漏查找,自動崩潰分析,處理泄漏跟蹤,內存搜索,輕鬆轉儲所有線程的調用堆棧,在命中斷點時設置/取消設置斷點,在沒有安裝VS的計算機上調試,.NET調試,日誌記錄,腳本化,支持循環..等等。基本上你得到的是一個輕量級的,沒有BS調試器,有大量的工具可以自動完成使用VS很難或不可能實現的痛苦任務,你會看到的最高代碼是MS使用這調試Windows,陡峭的學習曲線,但最終很有收穫 – EdChum

回答

3

我的問題是:是否值得學習使用WinDbg,或將 在Visual Studio中的調試工具給我幾乎同樣的 信息的努力嗎?

這真的取決於你在做什麼樣的節目。

WinDBG允許您查看OS內部的結構。它允許您查看整個系統中的線程和進程,以及在OS內核本身運行的調試代碼(如驅動程序)。有足夠的能力編寫腳本來挖掘某些信息,或者我相信甚至可以編寫在WinDBG中運行的插件來執行某些任務。

對於VS類型的調試器來說,大多數情況要麼困難要麼不可能。

我或其他任何人幾乎不可能告訴你是否應該學習使用WinDBG。這當然會讓你無所知曉,但完全有可能在你的生活中長時間不需要它。

相關問題