1

ビジュアルだけでなく、オーディオ処理、tcp / udp、VoIPなどにも多くのサードパーティコンポーネントを使用する古いVB6アプリがあります...

アプリを EXE として (たとえば VB6 IDE ではなく) 実行すると、GPF でクラッシュすることがあります。プログラムが数日間実行された後に発生し、周りに誰もいないときに発生します。

残念ながら、ユーザーはスクリーンショットを切り取ってしまいましたが、通常、有用な情報はありません。クラッシュの説明には、クラッシュが で発生したことが報告されていntdll.dllます。

ここに画像の説明を入力

私の質問:

  1. これをデバッグするにはどのようなツールが必要ですか?
  2. 実際に始めるにはどうすればよいですか?
  3. VB6 でコンパイルした PDB ファイルがあります。アプリは にコンパイルされOptimize for Fast Codeます。この状況で私は彼らに何ができますか?
4

1 に答える 1

2

ntsd または windbg (リンク) を使用し、いずれかのユーザー モード デバッガーでアプリを実行します (慣れていない場合は、コマンドは同じです。ntsd はコンソール デバッガーで、windbg は GUI デバッガーです)。どちらにも多くのコマンド ライン オプションがありますが、開始するには ntsd appname.exe で十分です。.sympath コマンドを使用して、デバッガーをシンボルに向けます。クラッシュが発生した場合、変数とスタックを調べて、不足している可能性のあるものを見つけることができます。

ところで - 上記のエラーは無効なハンドル エラーであるため、プログラムが古いハンドルまたは NULL ハンドルを Windows 関数に渡した可能性があります。デバッガーが詳しく教えてくれます。

于 2012-12-22T06:07:29.500 に答える