WinDbgと Visual Studio デバッガーを使用する主な理由は何ですか?
また、Visual Studio デバッガーの完全な代替品として一般的に使用されているのか、それとも必要が生じたときにそれ以上のものとして使用されているのでしょうか。
WinDbgと Visual Studio デバッガーを使用する主な理由は何ですか?
また、Visual Studio デバッガーの完全な代替品として一般的に使用されているのか、それとも必要が生じたときにそれ以上のものとして使用されているのでしょうか。
なぜ Visual Studio で windbg を使用する必要があるのか疑問に思っている場合は、Advanced Windows Debuggingを読む必要があります。本当に厄介な問題をデバッグする必要があるときはいつでも、windbg には Visual Studio よりも優れたテクノロジがあります。Windbg にはより強力なスクリプト言語があり、困難な問題を自動化する DLL を作成できます。gflags.exe がインストールされます。これにより、メモリの上書きをデバッグするためのヒープをより適切に制御できます。
実際にインストールを実行する必要はありません。ファイルをコピーするだけで準備完了です。また、adsplus.vb もインストールされるため、実行中のプロセスのミニダンプを取得できます。また、リモート デバッグを実行するためのセットアップも非常に簡単です。テスト PC でちらつく 15 インチ モニターと格闘する代わりに、自分のデスクから問題をデバッグできることほど良いことはありません。
日常的なコード作成には Visual Studio を使用しますが、他のコンピューターから問題のデバッグを開始する必要がある場合や、非常に厄介な状況に陥った場合は、windbg を使用するしかありません。windbg の学習に時間を費やすことは、大きな投資です。また、クラッシュ ダンプを見ると、windbg を使用してすべてのデバッグを行う http://www.dumpanalysis.org/blogとhttp://blogs.msdn.com/ntdebugging/default.aspxという 2 つの優れたリソースがあります。
WinDbgの使用に役立ついくつかの追加リンクがあります。ほとんどは.NET固有です。
ネイティブ コードとマネージ コードのどちらをデバッグしているかは指定しません。答えには影響しません。WinDbg はどちらにも非常に役立ちますが、多くの人は、.NET アプリをデバッグするときは WinDbg の関連性が低いと考えています。そうではありません。おまけとして、SOS 拡張機能を使用して WinDbg で .NET アプリをデバッグすることにより、.NET プラットフォームがどのように機能するかについて多くを学ぶことができます。WinDbg で .NET アプリを実行 (またはアタッチ) し、次のように入力します。
.loadby sos mscorwks
...使用中の CLR のバージョンに適した拡張機能をロードしていることを確認してください。次に、入力します...
!help
... SOS 拡張機能で使用できるコマンドを確認します。
Microsoft には開発者ツールが 1 つしかなく、それが WinDbg だと冗談を言っているのを聞いたことがあります。デバッグに必要なすべてのものは、そこまたは拡張機能にあります。確かに、それらのサブセットは、より使いやすい UI を備えた VS でも利用できます... :-)
kernel-debuggingとremote-user-mode-debuggingを組み合わせます。
AFAIK、Visual Studioは、私が「ソリューション」と説明しているモードでは、リモートデバッグを実行できません。それはwindbgを使用する非常に良い理由です。
問題:
解決:
また、カーネルモードとユーザーモードの両方で同じデバッガーを使用する方が簡単で、windbgはユーザーモードでも非常に強力であり、カーネルモードとユーザーモードの両方のインスタンスで独自のwindbg拡張機能を活用できます。
NT4.0 サーバーから .dmp ファイルを受け取ったときに使用しました。MSVC はこれらの古い形式のファイルをロードしません。
最新のビジュアルスタジオには、デバッガーを子プロセスに自動的に接続させるwindbgの「-o」に相当するものがまだありませんか?複雑な.batファイルから実行する必要があるアプリ、または親プロセスをフォークして終了するアプリに非常に役立ちます。
軽量で、クライアントのマシンにインストールせずに実行でき、高速で、カーネル モードをデバッグできます。
私はいつもウォッチアンドトレース機能が好きでした:'wt'->すべての関数呼び出しが発生すると出力ウィンドウに出力されます。それはかなりクールなものでした!