問題タブ [dbgeng]

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.

0 投票する
0 に答える
355 参照

debugging - 最初のスタック フレームのフレーム ポインター オフセットを取得する

Windbg 用に作成している拡張機能のために、すべてのスタック フレームのベース アドレスとトップ アドレスを取得する必要がありました。例として、ここに私が得たものがあります:

ESP=0023c79c EBP=0023c79c

ここの msdn ドキュメントによると、FrameOffset がゼロの場合は現在のフレーム ポインターを使用する必要があり、StackOffset がゼロの場合は現在のスタック ポインターを使用する必要があります。

http://msdn.microsoft.com/en-us/library/windows/hardware/ff548425%28v=vs.85%29.aspx

最初のフレーム、または上記の例のフレーム #26 では、フレーム オフセットがゼロであることを示していますが、現在のフレーム オフセット EBP は 0023c79c であり、スタックの一番上を参照しているため、フレーム # に対応することはできません。 26 のフレーム オフセット。では、スタック フレーム #26 のベースを正確に見つけるにはどうすればよいのでしょうか。

別の質問!tebですが、windbg で実行すると、次のスタック範囲が得られます。

では、26 番目のスタック フレーム ポインターとスタックのベースの間の 8360 バイト (240000 - 23df58) には、正確には何が含まれているのでしょうか? それはすべて 26 番目のスタック フレーム自体で構成されているのでしょうか、それともその間に何か他のものがありますか? (ret と ebp は別として)

0 投票する
1 に答える
61 参照

debugging - dbgeng の DisassemblyWide() によって逆アセンブルされた命令からアドレスを削除します

DisassembleWide()Windbg の拡張機能を作成する際に、オフセットを関数に渡して命令を逆アセンブルしています。ただし、逆アセンブルされた命令では、命令のアドレス + その命令の 16 進オペコードが追加されます。

DEBUG_ASMOPT_NO_CODE_BYTESでフラグを指定することで、オペコードを削除できましたSetAssemblyOptions()。ただし、命令オフセットを取り除くことができないようです。どちらも機能DEBUG_ASMOPT_DEFAULT | DEBUG_ASMOPT_NO_CODE_BYTESしていない(DEBUG_ASMOPT_DEFAULT | DEBUG_ASMOPT_NO_CODE_BYTES) & ~DEBUG_ASMOPT_VERBOSEようです。

何か不足していますか?命令からオフセットをきれいに削除する方法はありますか、それとも手動で行う必要がありますか?

0 投票する
0 に答える
201 参照

dbgeng - dbgeng を使用した実行中のプロセスのデバッグ

ダンプ ファイルからメモリをスキャンする wdk のサンプルに基づいた簡単なプログラムを作成しました。

今、プロセスの実行中に同じことをしたいと思いますが、いくつかの問題に直面しています:

  • 実行中のプロセスを中断する方法がわかりません

  • プログラムを終了すると、DetachProcess を呼び出したときにデバッグ対象が閉じられます。

ありがとう

0 投票する
1 に答える
508 参照

windows - DebugExtensionProvideValue を実装すると、WinDbg の内部状態が壊れますか?

DebugExtensionProvideValueカスタム疑似レジスタを提供できるように、拡張機能に実装しています。CDB では完全に動作し、WinDbg では最初は正常に動作しますが、デバッグを停止して新しい実行可能ファイルを開くと、何かが発生し、WinDbg は奇妙な使用不能状態になります。

問題が発生すると、WinDbg は次のメッセージをコマンド ウィンドウに出力します。

コールバックを配信できません、3131

これが発生した後、WinDbg はすべての出力をコマンド ウィンドウに 2 回出力するようです!

私の拡張コードは非常に単純です:

問題を再現すると、次のようになります。

機能しているように見える回避策を思い付くことができましたが、QI も AddRef も行っていないインターフェイスをリリースする必要があるため、正しくないと感じます。私の最小限のテストでは、このハックがクラッシュすることはありませんでした.

私が知る限り、デバッグを停止して CDB でこのような新しい .exe を開くことはできないため、問題は WinDbg でのみ発生するようです。

私は何か間違ったことをしていますか、それとも DbgEng にバグがありますか?

0 投票する
2 に答える
267 参照

windbg - IDebugControl5.GetContextStackTraceEx でスタック フレームをインライン化しますか?

DEBUG_STACK_FRAME_EXインライン フレームのシンボルを解決するにはどうすればよいですか?

と は認識してDEBUG_STACK_FRAME_EXいますが、 を対応するシンボルULONG InlineFrameContextに解決する方法がわかりません。InlineFrameContext

と のFrameSignatureFrameIdは何INLINE_FRAME_CONTEXTですか?