0

デバッガー (ollydbg) で C++ でコンパイルした単純なプログラム (いくつかの素数を計算してから終了する) の実行命令に従おうとしていますが、いくつか質問があります。

  • 最初の命令が "CODE" セクションのエントリ ポイントではないのはなぜですか? 違います
  • いくつかの命令を「ステップ オーバー」するとすぐに、デバッガーがクラッシュし、「ntdll.someaddress でのシングル ステップ イベント、shift+F7/F8/F9 を押して例外をプログラムに渡します」と書き込み、クラッシュします。命令をステップ実行せずにプログラムを実行すると、正常に動作し、プログラムは問題なくロードされます

なぜこれが起こるのですか?これは私のプログラムだけで発生するのではなく、他のいくつかのプログラムでも発生します (システム内のほぼすべての 32 ビット exe)。

4

1 に答える 1

0

64 ビット OS で OllyDbg を実行している場合、OllyDbg は x86-64 Windows をサポートしておらず、32 ビット アプリのデバッグに使用されるデバッガーとしてもサポートされていないため、運が悪いと思います。このフォーラム スレッドを参照してください。これは 2006 年のものですが、それ以来何も変わっていません。彼らが提案するのは、別のデバッガーを使用することです。たとえば、WinDbg の 64 ビット バージョン (優れたデバッガー) などです。

最初の命令が "CODE" セクションのエントリ ポイントではないのはなぜですか? 違います

これは OllyDbg で設定できます: オプション - デバッグ オプション - イベント - "最初の一時停止を行う"。ntdll にあり、開始モジュールのエントリ ポイントが呼び出される前でも呼び出される「システム ブレークポイント」から開始できます。

于 2012-05-02T21:38:55.740 に答える