金魚カーネルを次のようにコンパイルしました。
[ ] Optimize for size,
[*] Kernel hacking
[*] Compile the kernel with debug info
[*] KGDB: kernel debugging with remote gdb —>
[*] Enable dynamic printk() call support
コンパイルされたカーネルで AVD を開始しました。
emulator -kernel goldfish/arch/arm/boot/zImage -avd TestAVD
コンパイル済みの C プログラムを AVD にプッシュしました。
そして、ライブラリをダウンロードしました(それが適切な方法かどうかはわかりません)
adb pull /system/lib ./debuginfo/lib
adb pull /system/bin/linker ./debuginfo/lib
gdbserver を実行します。
gdbserver 127.0.0.1:7777 ./a
転送ポート:
adb forward tcp:7777 tcp:7777
gdb を実行する
gdb-multiarch ./a
検索ディレクトリを指定します。
set solib-search-path ./debuginfo/lib
デバイスに接続
target remote :7777
たとえば、私は近くで壊れました。
0xaf0ae228 in close () from /home/wuyihao/android_sec/debuginfo/lib/libc.so
1: x/i $pc
=> 0xaf0ae228 <close+8>: svc 0x00000000
(gdb) list
No symbol table is loaded. Use the "file" command.
ソースを手に入れることができました。そこで、変数 CFLAG="-g" でカーネルを再コンパイルしようとしました
違いはありません。
ありがとうございました!
ps: ダウンロードしたライブラリがすべて削除されていることに気付きました。