2009-10-20 23 views
6

私はミニクラッシュダンプを分析しようとしており、クラッシュについての詳細を知るためにシンボルファイルが必要です。イムは、現在だけで見て: "!034eff74 0086eee9 00000000 0089d58d 034eff94 app_integratorをZNK14ACE_Data_Block4baseEv + 0x6に"rebase.exeを使用してmsys/mingw gccビルドされたDLLからデバッグ情報を抽出しますか?

それはwindbgの可読フォーマットにMSYS/mingwのgccの構築されたDLLからデバッグ情報を抽出することは可能ですか?そうでない場合は、MAPファイルを何らかの方法で読み込むなど、より詳細な情報を得る他の方法はありますか?

dllとすべての.oファイルは、-gフラグを使用してビルドされています。

答えて

5

Windbgは、mingwインストールで-gによって生成されるデバッグ情報に対処できません。しかし、それはCOFF記号にうまく対処できます。あなたのDLLのソースファイルが十分に小さい場合

、あなたはおそらく構築するCOFFデバッグ情報を取得する(-gcoffではなく-g)することができます。

したがって、Windbgは(おそらく)COFFシンボルを扱うことができ、GCCはそれらを生成することができます。だからそこから簡単になるはずですよね?私はgccコンパイルされたDLLをロードしていたVisual Studio 2008によって生成されたWin32実行可能ファイルでこれを正確に実行しようとしていました。残念ながら、私にとっては、-gcoffでコンパイルしてもうまくいきませんでした。 Mingwのgccは、64k行以上のコードを持つプロジェクトのCOFFシンボルを生成しません。私が使っていたDLLは、64Kのコードラインよりもはるかに大きいものでした。悲しいことに私は認めなければならない、私はあきらめて、信頼できるOutputDebugStringに落ちた。さもなければ私はより完全な指示を与えることができるだろう。 gccに大きなソースファイル用のCOFFシンボルを作成させるオプションや、DWARFやSTABSデータを解析してwindbgの内部シンボルテーブルにデバッグ拡張機能を書き込む代替オプションを検討するのは魅力的ではありませんでした。

私は問題を解決しました。

さらなる提案はin this forum post at windbg.infoです。

+0

完璧、私はそれを試してみましょう。 – Kristofer

+0

私はそれが働いたか、そうでなければ何をすることができたかを知りたいです! – Pete

+0

関連するノートでは、プロファイラVery Sleepyは、-gstabsで作成されたデバッグシンボルでうまく動作します –

関連する問題