2011-07-13 9 views
1

コアダンプファイルがあります。私がgdbで開こうとすると。バックトレース(アドレスとそれに対応する機能を持つ)を見ることができますが、対応する機能はソースファイルではなく.soファイルにマップされています。.soファイルをgdbのソースファイルにマップする方法

BTはNMを使用してシンボルを表示することができ、この

#0 0xf611b39c in xxFun() from /lib/libxx.so.0 

$file /lib/libtxx.so.0 
/lib/libtxx.so.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped 

のように見えます!

クエリ: - 1)この.soファイルをソースファイルにマップするには 2)私はinfo locals/argsを表示できません。これらのデータはどのように入手できますか?

私はあなたがより多くの情報が必要な場合は私に知らせてください

#info locals 
No symbol table info available. 
#info args 
No symbol table info available. 

を表示してみてください。

+1

の両方を提供します

フラグ)。そうでなければ、ライブラリメンテナからデバッグバージョン(またはビルドソース)を取得する必要があります。 –

答えて

0

「n.m」とまったく同じです。 libxx.soにデバッグ情報(通常はコンパイル時に-gスイッチ)が組み込まれている必要があります。あなたは、少なくとも `-g`コンパイルを使用し、つまり(デバッグモードで再びそれを構築、自分で.soファイルを作成する場合など、ソースへのマッピングアドレス、およびinfo localsargs

+0

@ n.mと@Employed Russianにあります。あなたの提案をありがとう。実際には、デバッグモードでビルドし、* .soファイルの代わりに* .so.debugファイルを使用する必要があります。しかし、* .soファイルが表示され、ストライピングされていません。それは奇妙な唯一のものです。 – Thangaraj

関連する問題