2013-05-28 22 views
7

私はまだC++での相対的な初心者ですが、サードパーティのDLLでネイティブのC++ DLLから静的にリンクしている問題を抱えています。 Visual Studio 2012を使用してDLLをデバッグしています。WinDbgがVisual Studioでできないことを教えてください。

(FWIW、サードパーティのDLLは、SybaseのOpen Clientで、私は動的に私のC++ DLLをロードし、私が書いたC#の実行、経由で私のDLLをデバッグしています。)

私は、Visual使用しましたStudioを使用して、逆アセンブルを実行し、サードパーティのDLLのレジスタとメモリの使用状況を確認します。 Visual Studioは私のプロセスの中で何が起こっているかについて多くの良い情報を与えてくれましたが、私が見ているものよりも多くのものがあるかもしれないと思っています。

私はWinDbgが非常に強力なツールだが、それをうまく使う方法を学ぶにはかなりの時間と労力がかかることを読んだ。私の質問は、WinDbgを使うことを学ぶ努力をする価値があるのか​​、それともVisual Studioのデバッグツールが私にほとんど同じ情報を与えるのだろうか?

+6

Visual StudioデバッガのWindowsヒープをいつか歩いてみてください。 WinDbgで実際に*成功*します。 – WhozCraig

+1

WinDbgスクリプトは、構文がVSと同じように強力である可能性がありますが、おそらくアドインやマクロを使用するとVSでも同様の機能を得ることができます。 – 0xC0000022L

+5

メモリリーク検出、自動クラッシュ解析、ハンドルリークトレース、メモリ検索、すべてのスレッドのコールスタックを簡単にダンプする機能、ブレークポイントがヒットしたときにブレークポイントを設定/解除する機能、VSがインストールされていないマシンでデバッグする機能、ロギング、スクリプト作成、ループサポートなど。基本的には、軽量で、BSデバッガには、VSを使用することが困難または不可能な痛みを伴う作業を自動化するツールがたくさんあります。最高の裏書はMSの使用ですこれはWindowsをデバッグするためには険しい学習曲線ですが、結局は非常にお得です – EdChum

答えて

3

私の質問は:それはWinDbgのを使用することを学ぶための努力の価値がある、または私はほとんど同じ 情報を与えるのVisual Studioでデバッグツールを でしょうか?

これは実際に行っているプログラミングの種類によって異なります。

WinDBGでは、OS内部の構造を見ることができます。これにより、システム全体のスレッドやプロセスを確認し、OSカーネル自体(ドライバなど)で実行されるコードをデバッグすることができます。特定の情報を掘り起こすためのスクリプトを書いたり、WinDBG内で実行されるプラグインを作成して特定のタスクを実行したりする能力があります。

これのほとんどはVSタイプのデバッガでは困難または不可能です。

私や他の誰かがあなたにWinDBGの使い方を学ぶべきかどうかを伝えることは、ほとんど不可能です。確かにあなたには分かりませんが、それを必要とせずにあなたの人生に長い時間をとることは完全に可能です。

関連する問題