android-x86使用gdb |用于调试mediaserver的gdbserver

时间:2014-08-01 09:58:21

标签: gdbserver android-x86

我是否了解其他人使用(gdb和gdbserver)调试mediaserver(Native Binary)的经验

在阅读了几篇博客和手册后,我处于困惑状态。

我仍在努力获取GDB所需的符号信息......

请找到控制台日志......

rajeshkumar@tpvgtvvm1:/media/rajeshkumar/droid_2k14/ref/ws_home/dev1$ python $AUTIL/agdb.py mediaserver
found debugger: /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/android-x86/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.7/bin/i686-linux-android-gdb
found symbol: /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/android-x86/out/target/product/x86/symbols/system/bin/mediaserver
found mediaserver, pid is: 1978
attach gdbserver to 1978, listen on port 7890

rajeshkumar@tpvgtvvm1:/media/rajeshkumar/droid_2k14/ref/ws_home/dev1$ i686-linux-android-gdb -q -x ./temp_dbg/gdbclient.cmds /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/android-x86/out/target/product/x86/symbols/system/bin/mediaserver
Reading symbols from /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/android-x86/out/target/product/x86/symbols/system/bin/mediaserver...done.
0x400f95a6 in ?? ()
(gdb) info threads
  Id   Target Id         Frame 
* 1    Thread 1978       0x400f95a6 in ?? ()
(gdb) bt
#0  0x400f95a6 in ?? ()
warning: (Internal error: pc 0x8 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x7 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x7 in read in psymtab, but not in symtab.)

#1  0x00000008 in ?? ()
warning: (Internal error: pc 0x7 in read in psymtab, but not in symtab.)

#2  0x41717bf0 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) info sharedlibrary 
From        To          Syms Read   Shared Object Library
0x400079a0  0x40020059  Yes         /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/android-x86/out/target/product/x86/symbols/system/bin/linker
(gdb) 

“./temp_dbg/gdbclient.cmds”的内容

set solib-absolute-prefix /non_exist_dir

set sysroot /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/temp_dbg/symbols/system

set solib-search-path /media/rajeshkumar/droid_2k14/ref/ws_home/dev1/temp_dbg/symbols/system/lib:/media/rajeshkumar/droid_2k14/ref/ws_home/dev1/temp_dbg/symbols/system/bin

target remote 192.168.56.102:7890

以下是我探索过的一些可能性,但没有运气......

1,在Android.mk模块级文件中添加了LOCAL_CFLAGS:= -g -O0(我试过的其他可能的值-ggdb | -ggdb3)。

2,将全局级别的默认编译器标志(build / core / combo / select.mk | build / core / combo / TARGET_linux-x86.mk)修改为“-g -O0”,观察组件之类的构建失败Audioflinger,system / core / lib。我恢复到-O2。

系统信息......

1,在VirtualBox上安装iso映像。

2,使用午餐选项“5. android_x86-eng”来构建图像。

3,git branch info(x86 / kitkat-x86)“Android-x86 4.4-RC2(KitKat-x86)”

请让我知道其他可能性......

2 个答案:

答案 0 :(得分:0)

在构建项目时,请包含APP_OPTIM:= debug flag以生成符号信息。

您的命令看起来像

../<project-folder>: ndk-build APP_OPTIM:=debug NDK_DEBUG:=true

答案 1 :(得分:0)

作为一个快速破解并解锁我自己,我用从https://chromium.googlesource.com/android_tools

下载的chrome android_tools prebuild gedserver(GNU gdbserver(GDB)7.6)替换了prebuild gdbserver(GNU gdbserver 6.6)

使用i686-linux-android-gdb(GNU gdb(GDB)7.6)+ gdbserver(GNU gdbserver(GDB)7.6)我能够进步 在我使用多线程mediaserver应用程序进行调试时。