2009-03-15 10 views
2

何らかの理由で、私はデバッグ中のアプリケーション用のリンカマップしか持っていません。オフセット "myApp.exe!+ 4CA24"でクラッシュが発生したというクラッシュログがあります。リンカマップからソース行番号を特定する方法

リンカーマップからメソッドを見つけることができました。オフセット "myApp.exe!+ 4BD7C"にあるとします。

上記の情報を使用してソースコード内の正確な行を特定する方法はありますか?

私たちが.codファイルを持っていれば、それは非常に簡単ですが、私は持っていない(作成することはできません)。

答えて

2

マップファイルのみを持つ場合は、ディスアセンブラでEXEファイルを調べて、コンパイラがコードを生成する一般的な方法から認識する構造と比較するのが最適です。これらはあなたが学ばなければなりません。つまり、少なくともいくつかのアセンブラを学習する必要があります。これは、将来コードをデバッグする必要がある場合に役立ちます。

プロセッサーの説明書で無料のIntel-bookをダウンロードし、サイズをチェックするだけです。このようにして、障害のある命令への道筋を数えることができます。最良の結果を得るには、2つの方法をお互いに組み合わせて使用​​する必要があります。

mov DWORD PTR [edi+40], eax 

(命令、登録、オフセット、サイズや順序が異なる場合がありますが、間接的には一般的にどこほとんどのコードがクラッシュです):

は通常、あなたが探しているはずだと、このようなビットに見えるものです

将来的にCODファイルの生成をオンにすることを真剣に検討する必要があります。フォールティングされた行を見つけるのが非常に簡単です。

0

マップファイルの実際の情報に依存します - ライン番号情報(今日はかなりまれです)があれば、それは明らかですし、実行することができます。さもなければあなたができることは推測です。

関連する問題