問題タブ [windbg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
debugging - ACCESS_VIOLATION_BAD_IP
アプリケーションのクラッシュを把握しようとしています。WinDbgは私に次のことを教えてくれます:(アンダースコアの代わりにダッシュを使用)
LAST-CONTROL-TRANSFER:005f5c7eから6e697474
DEFAULT-BUCKET-ID:BAD_IP
BUGCHECK-STR:ACCESS-VIOLATION
6e697474が有効なアドレスではないことは私には明らかです。
3つの質問があります:
1)「BAD_IP」バケットIDは「BadInstructionPointer」を意味しますか?
2)これはマルチスレッドアプリケーションであるため、1つの考慮事項は、関数を呼び出そうとしたオブジェクトがスコープ外になったことです。それが同じエラーメッセージにつながるかどうか誰かが知っていますか?
3)他に何がこのようなエラーを引き起こす可能性がありますか?私の同僚の1人は、これがスタックオーバーフローの問題である可能性があることを示唆しましたが、過去のWinDBGは、これらを検出して指摘するのにかなり信頼できることが証明されています。(それを診断するためにバックグラウンドで実行されるブードゥーについては確信が持てません)。
windows - WinDbg Dr.Watsonminidump-インストールされたバージョン用に最初にビルドされたpdb/dllが必要ですか?
ターゲットのアプリケーションクラッシュからのmindmpファイルがあります。あるバージョンのソフトウェア用にdll/pdbファイルを再構築し、windbgにシンボルを正しくロードさせることは可能ですか?
私の問題は、pdbファイルがメジャーリリースでのみ保持されることです(残念ながら)。これはデイリービルドであり、自分で再構築できますが、エラーが発生します。
!sym noisyがオンの場合:「画像ヘッダーがメモリ画像ヘッダーと一致しません。」
dllを使用してpdbをビルドしたことに注意してください。これらは、同じRELEASEディレクトリからのものです(デバッグをビルドする必要がありますか?)
これらはリリースビルドです(リリースビルドがターゲットにインストールされてクラッシュするため)、どういうわけかデバッグビルドdllを使用してより多くのシンボル情報を取得する必要がありますか?
debugging - Windbgの学習を開始
デバッグする知識がないという問題に悩まされた後、 Windbg の使用方法を学ばなければならないと決めました。私の唯一の問題:どこから始めればよいかわかりません:-(私は実際にはWinApi-Guyではなく、通常はWindows Apiを抽象化する言語を使用しています。
だから私はただ疑問に思っています: プログラミングは知っているが、Windows の奥深さについてはあまり知らない人にとって、Windbg を学ぶための最良の情報源 (本、ウェブサイト) は何ですか? (そして、はい、私は毎日 oldnewthing を読んでいます :))
c++ - Windbg での C++ STL コンテナーのデバッグ
Windbg ファンは非常に強力であると主張しており、私も同意する傾向があります。しかし、STL コンテナのデバッグに関しては、いつも行き詰まっています。変数がスタックにある場合、!stl
拡張機能がそれを把握することがありますが、複雑な型 ( などstd::vector<TemplateField, std::allocator<TemplateField> >
) のコンテナーがヒープまたは他の構造の一部にある場合、その内容を表示する方法がわかりません。
ヒントや指針をいただければ幸いです。
c++ - Windbg: C++ 関数のオーバーロードの 1 つにブレークポイントを設定する方法は?
C++ 関数の 2 つのオーバーロードがあり、そのうちの 1 つにブレークポイントを設定したいと考えています。
すべてのオーバーロードにブレークポイントを設定しても問題ありませんが、方法がわかりません。
debugging - WinDbg では、プロセスの実行中にメモリ内の項目を変更できますか?
マップ ファイルで見つかったアドレスを使用して、windbg を使用して、アプリの実行中にメモリ内の変数を変更できますか?
おそらく変数を使用して、実行時に機能のオン/オフを切り替えることに本当に興味があります。
これをどのように行いますか?デバッガーを介してアプリを中断する必要がありますか?
c# - WinDbgは文字をコンソールにノンストップで出力します
GUIに.Net2.0、WCF、SyncFusionコンポーネントを使用して、現在約200か所で使用されているPOSアプリケーションを開発しています。
2日前に新しい場所にアプリケーションをインストールしましたが、アプリケーションが突然終了しました。
アプリケーションにはイベントと例外の実行ログがあるため、アプリケーションに何かが発生した場合、ログには常に何かがあります。この場合、ログは単純に切り取られます。他の場所でも同様の状況が発生しましたが、非常にまれであり、1回または2回しか発生しなかったため、デバッグダンプをキャッチできませんでした。
その場所にあるコンピューターのハードウェア設定は少し異なります。たとえば、POSプリンターへの印刷と、ビデオモニターでの出力の表示の両方に使用される、LPT出力のスプリッターがあります。
ただし、この場所では、約1.5時間ごとに発生しています。WinDbgを開いてプロセスにアタッチしようとしましたが、これが奇妙なことです。デバッグ出力がある領域に、アプリケーションが生成するトレースメッセージが表示されますが、文字のノンストップストリームもあります。具体的には「」繰り返されるb0。
私の問題は、その「b0」がどこから来ているのか、そしてそれが何を意味するのかがわからないことです。スプリッターかもしれないと思いますが、日曜日までテストできません。
誰かがこれを解決する方法を知ってくれることを願っています。
asp.net - スパイクするASP.NETプロセスのメモリダンプをデバッグするにはどうすればよいですか?
申し訳ありませんが、私の本当の質問を表現する良い方法を見つけることができませんでした。
トラフィックの多いASP.NETサイトを64ビットマシンで実行しています。ただし、アプリの一部のレガシーコンポーネントが原因で、IISを32ビットモードで実行しています。この特定のWebアプリを、Webガーデンオプションがオンになっているアプリケーションプール内で実行しています(8コアマシン内で6つのプロセスを実行しています)。
週に1〜2回、プロセスの1つが100%のCPU使用率に急上昇し、サイトの速度が大幅に低下するため、私の計画では、それが発生するまで待機し、問題のあるプロセスをメモリダンプしてから、WinDbgを調べてコードがどこでホイールを回転させているかを確認するためにスパイクしているスレッド。
以前にWinDbgを使用してデバッグし、サイトでデッドロックを引き起こしている原因を突き止めましたが、それは数か月前のことであり、どのように機能させたか思い出せません。(補足として、これはあなたが行うすべてを文書化するためのレッスンです。)
DLLバージョンの問題を防ぐために、サイトを実行しているWindows2003サーバーでWinDbgを実行しています。これまでの手順は次のとおりです。エラーメッセージが表示されるのはどこが間違っているのか教えてください。
最初に、UserDumpを使用して、次のコマンドを使用してスパイクプロセスをメモリダンプします。ここで、3389はプロセスのIDです。
userdump -k 3389
ダンプをWinDbgのx86エディションにロードします。
64ビットマシンで32ビットを実行しているので、最初にメモリダンプをロードしてから、次のようにします。
.load wow64exts
.effmach x86
シンボルパスに、アプリのPDBファイルを含むディレクトリが含まれていることを確認します。
.sympath+ c:\inetpub\myapp\bin
`.load SOS'だけを実行すると、「システムは指定されたファイルを見つけることができません」というエラーで失敗するので、次の完全修飾ルートを実行します。これは機能します。
.load c:\windows\microsoft.net\framework\v2.0.50727\sos
ここから、私は迷子になります。のようなSOSコマンドのいずれかを試してみると、次の!threads
エラーが発生します。
そのエラーには、確認する必要のある項目の番号付きリストも付随しています。最新バージョンのデバッガーを実行していることを確認しました。mscordacwks.dllは実際にはmscorwks.dllファイルと同じディレクトリにあり、ダンプファイルと同じアーキテクチャでデバッグしています。
魔法の" .cordll -ve -u -l
"コマンドも実行しましたが、それでも何も解決しません。CLR DLL status: No load attempts
それを実行すると、いつも「」で迎えられます。次に、「.reload
」を試してみます。これにより、「」のような警告がいくつか表示されますWARNING: wldap32 overlaps dnsapi
。「」のようなことを言ってくれたらいいのにCLRDLL: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll
と思います。しかし、そうではありません。
windows - WinDbg で長い操作を中止するにはどうすればよいですか?
多くの場合、WinDbg は操作を実行している *ビジー*状態になります。
多くの場合、これは、some_variable_itll_never_find を dtしようとしたり、シンボルなしでどこかにブレークポイントを設定したり、このツールをいじったりする何千もの他の間違いが原因です。
現在の操作をキャンセルする方法はありますか?