2017-05-10 21 views
0

私はカスタムARMボードを持っています。すべてのイメージを生成するためにbuildrootを使用します。私たちはglibcを使用しています。私はCライブラリ呼び出しの中でデバッグする必要があります。 "Set Verbose On"を指定してgdbの下でコードを実行すると、libc6.soからシンボルが読み込まれますが、Cライブラリ呼び出し(ブレークポイント)をfork(例えばfork)し、info locals/argsを実行すると、 "No symbol Info Table"と表示されます。 glibcソースコードからlibc6-dbgパッケージを生成

Reading symbols from /lib/ld-linux-armhf.so.3...done. 
Loaded symbols for /lib/ld-linux-armhf.so.3 
Reading symbols from /lib/libpthread.so.0...done. 
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available. 
Loaded symbols for /lib/libpthread.so.0 
Reading symbols from /lib/libc.so.6...done. 
Loaded symbols for /lib/libc.so.6 


(gdb) bt full 
#0 0x76e19af0 in fork() from /lib/libc.so.6 
No symbol table info available. 
#1 0x76dded80 in [email protected]@GLIBC_2.4() from /lib/libc.so.6 
No symbol table info available. 
#2 0x76ddf04c in [email protected]@GLIBC_2.4() from /lib/libc.so.6 

私のlibc.soは、すべてのデバッグシンボルを持っている..私はglibcのか、他の設定が必要とされて再構築する必要があります。以下のreadelfがの抜粋であることはlibc.so

[71] .debug_info  PROGBITS  00000000 1277e0 00106b 00  0 0 1 
    [72] .debug_abbrev  PROGBITS  00000000 12884b 0003f7 00  0 0 1 
    [73] .debug_line  PROGBITS  00000000 128c42 0003e2 00  0 0 1 
    [74] .debug_frame  PROGBITS  00000000 129024 002a78 00  0 0 4 
    [75] .debug_str  PROGBITS  00000000 12ba9c 000360 01 MS 0 0 1 
    [76] .debug_loc  PROGBITS  00000000 12bdfc 00162a 00  0 0 1 
    [77] .debug_ranges  PROGBITS  00000000 12d426 0000c0 00  0 0 1 
    [78] .shstrtab   STRTAB   00000000 12d4e6 000528 00  0 0 1 
    [79] .symtab   SYMTAB   00000000 12da10 031700 10  80 10452 4 
    [80] .strtab   STRTAB   00000000 15f110 018ed1 00  0 0 1 

答えて

2

さらに、albfanの言うことに加えて、BR2_ENABLE_DEBUGを有効にしてデバッグシンボルを取得する必要があります。

実際、albfanの言うことは完全に正しいわけではありません:バイナリをターゲット(デバッグシンボルなし)から完全に削除し、ステージング領域内のデバッグシンボルでバイナリを保持することができます。これはリモートデバッグを行う場合に特に便利です。

私たちのBuildrootトレーニングhttp://free-electrons.com/doc/training/buildroot/buildroot-slides.pdf以降、スライド267以降です。

+0

ありがとう...いいえ、私はgdbのCライブラリ呼び出しをデバッグすることができます...... –

0

http://lists.busybox.net/pipermail/buildroot/2012-May/053310.html

ターゲットのバイナリは、このようにデバッグ情報を削除し、ビルド後にストライプます。-S を無効にするには、 "ビルドオプション" - > "バイナリのコマンドをターゲットに貼り付けて "に移動し、 "なし"を選択します。

+0

ビルドオプションを変更してクリーンビルドを実行しましたが、gdbに「No Symbol table Info Found」と表示されます。 –

関連する問題