0

オープンソース アプリケーションで見つけたバグの原因を見つけようとしています。

Windows マシンでビルドを実行することはできましたが、逆アセンブルで問題のある場所を見つけるのに苦労しています。

私は 3 つの異なるデバッガー (WinDbg、OllyDbg、および VisualStudio) を試しましたが、それぞれでほとんど同じ情報が得られます。

では、ソース コードを入手したとして、ライブ アプリケーションをデバッグするにはどうすればよいでしょうか? アプリケーションが C で書かれている場合、データ構造を調べるにはどうすればよいですか?

上記のデバッガーのいずれかで、gcc のデバッグ シンボルの読み込みがサポートされていますか?

何か間違ったことをしているように感じます。最適化されたアセンブリでこのアプリをデバッグしたくありません...

4

4 に答える 4

1

cygwinまたはMinGWからの GDB の移植版があります。gdb を直接試してみませんか?

于 2009-11-13T04:05:45.450 に答える
1

簡単な答えは次のとおりです。実行できない場合、どのツールでも実行できる最善の方法は、コンパイル時のエラーをデバッグすることです。たとえソースがあったとしてもです。

あなたの説明から、根絶しようとしているバグは実行時のバグ (コンパイル時ではない) であることは明らかなので、実際に実行する必要があります。アプリケーションが Windows で実行できない場合は、Windows からデバッグしようとするべきではありません。

そうは言っても、RageZが示唆しているように、cygwinのようなものを使用するのがおそらく最善の策です. 次に、Linux の場合と同じようにプログラムをデバッグします。

HTH

于 2009-11-13T04:10:01.883 に答える
0

他のすべてが失敗した場合でも、バグを特定した場所の周りのコードに多くのログを記録することができます。これが最も良いのは、これがリリース モードでも機能することです。バグを修正したら、ロギング行を削除することを忘れないでください。

于 2009-11-13T08:35:15.013 に答える
0

どのように Windows でビルドしましたか?

MSVC 自体でビルドしてみてはいかがでしょうか。次に、デバッグ バージョンをビルドして簡単にデバッグできます。MSVC のグラフィカル デバッガーは非常に優れています。

于 2009-11-13T06:18:55.877 に答える