2012-01-10 7 views
1

私はgdbでデバッグしたい本当に大きなプロジェクトに取り組んでいます。残念ながら、-gフラグでコンパイルするには、2日半かかり、60Goより大きい出力ライブラリが必要です(プロジェクトには-gなしで〜1Goがかかります)。-gフラグを付けずにgdbで読み取り可能なシンボルを取得しますか?

シンボルテーブルを取得する簡単な方法があります(バックトレースできます)。 私は、gdbが3つのレベルのデバッグを提供しているのを見てきました(-g レベルと記載されていますhere)。 ?

ありがとうございます。

+0

"あなたは' '' 'でしょうか? – NPE

+0

@aix:誰かが私のオブジェクトを解析するために 'string'コマンドを使うことができると私に言った。 @RicardoCárdenes:ありがとう!下の試行がうまくいかない場合は試してみます。 –

+0

このスイッチは、 '-feliminate-unused-debug-symbols'というスイッチが見つかりました。私のlibの1つを800Moから35Mo(元の8Mo)に縮小しているようです。私はそれをプロジェクト全体で一晩作業させ、結果についてあなたに知らせます。 –

答えて

6

関数名だけのバックトレースでは、-gはまったく必要ありません。

最新のGCCバージョンを使用してファイルと回線情報を含むバックトレースについては、-gmltオプション(最小行テーブル)を試してください。ローカル変数情報はGDBで利用できないことに注意してください。

ローカル変数を使用する場合は、おそらく-gdwarf-4を使用します。

ご指摘のドキュメントはgcc-2.95です。それは古代のバージョンです。あなたはまだそれを使用している場合は、あなたの最初タスクを使用すると、ソースファイルについての考えを持っている場合は、compile them with -g optionをデバッグしたいgcc-4.6.2

+0

私は '-ggdb'と' -feliminate-unused-debug-symbols'を組み合わせて使用​​しています。私は '-gmlt'を試してみるでしょう、それは動作し、より少ないディスクスペースを使用することができます。 –

1

(現在)への切り替えをする必要があります。 link with -gオプションも必ず確認してください。これで部分的なデバッグイメージが作成されました。

+0

残念ながら、私はアプリケーション全体をデバッグできるようにしたいと思います。 –

関連する問題