私は、クラッシュを引き起こす原因を見るのに十分なコンテキストを得るために、ライブラリコードの大きな断片を逆アセンブルしなければならないのは本当に面倒です。私はちょうどobjdumpアドレスを手渡すことができ、それが私のための関数の境界を見つけることができる方法はありますか?objdumpにアドレスを与えて、それを含む関数を逆アセンブルすることはできますか?
EDIT:それでも、私はスタックトレース全体を逆アセンブルすることはできますか?
私は、クラッシュを引き起こす原因を見るのに十分なコンテキストを得るために、ライブラリコードの大きな断片を逆アセンブルしなければならないのは本当に面倒です。私はちょうどobjdumpアドレスを手渡すことができ、それが私のための関数の境界を見つけることができる方法はありますか?objdumpにアドレスを与えて、それを含む関数を逆アセンブルすることはできますか?
EDIT:それでも、私はスタックトレース全体を逆アセンブルすることはできますか?
これはおそらく何か?
$ objdump -S --start-address=0x42 foo.o | awk '{print $0} $3~/retq?/{exit}'
それはあなただけでGDBにクラッシュコアをロードし、そこに探検することはできません境界がret(q)
objdump --start-address=
おそらく?
によってマークされていると仮定すると、それは
ret(q)
を見つけるまで0x42
から始まるリストディスアセンブリを出力しますか? (あるいはコアやgdbを使わずにクラッシュアドレスをどうやって解決するのですか?) – Rupクラッシュがクラッシュコアを生成しているかどうかは分かりません。これはカーネルのデバッグに向かい、クラッシュするライブラリはブートプロセスの早い段階で実行されています。 – Alex