2009-06-26 7 views
0

私はいくつかのCコードにクラッシュし、デバッグシンボルなしでビルドしました。コールスタックの絶対アドレスを持つバックトレースしか持っていません。これはWindows上にあります(64ビット)。私はLinuxの人ではあるので、これをデバッグする方法は少し分かりません.Linuxではvalgrindの下でコードを実行しますが、AFAIKはWindows 64ビット用のツールはありません。デバッガなしでのデバッグ

私のオプションは何ですか?私は自由にCコードを変更することができますが、デバッグシンボルでビルドすることはできません。デバッグシンボルでビルドできないのは、私のバイナリがMSツール(mingw-w64でビルドされている)でビルドされていないからです。

答えて

1

マップファイルを生成する必要があります。マップファイルは、実行可能ファイル/バイナリファイル内のさまざまなパブリックシンボル(関数、グローバルなど)のアドレスを一覧表示します。通常は、リンカーへの特別なスイッチを使用して生成することができます。

MSDN reference for /MAP

+0

私はMSコンパイラを使用していないので使用できません - これを明確にするために質問を編集しました –

+0

どのコンパイラを使用していますか?マップファイルは(ほとんど)普遍的な概念です。 –

+1

DavidはMinGWを使用しており、MinGW FAQによれば、マップファイルを作成できます。http://www.cs.colorado.edu/~main/cs1300/doc/mingwfaq.html#debugging – RichieHindle

0

おそらく、バイナリに埋め込まれたシンボルを理解することができ、GDBの明バージョンを使用する必要があります。

関連する問題