利用GDB调试Android里的程序

0.编译整个源码,以便得到所有的调试符号,在froyo/out/target/product/$PRODUCT_NAME/symbols

1.启动模拟器中的webbrowser,登入到adb shell中, 利用ps命令查看其进程ID, 然后启动gdbserver:
  # gdbserver :5049 /system/bin/app_process
这个命令表示gdbserver监听5049端口,以便给其他gdbclient连入后调试app_process

2.在本机的shell中,使用#adb forward tcp:5049 tcp:5049来转发到本地tcp端口上

3.本地使用froyo/prebuilt/下的arm-eabi-gdb来进行连接gdbserver,先要对gdb进行设置,如下
新建一个文件# cat << EOF > /tmp/gdb.cmd
            > set solib-absolute-prefix froyo/out/target/product/$name/symbols
            > set solib-search-path froyo/out/target/product/$name/symbols/system/lib
            > EOF
接着执行: 
# ./arm-eabi-gdb -x /tmp/gdb.cmd \
    froyo/out/target/product/$name/system/bin/app_process
gdb > target remote xxx.xxx.xxx.xxx:5049

gdb > 设置断点,进行调试

run时报错The "remote" target does not support "run".  Try "help target" or "continue".但断点之后用c,可以运行。

你可能感兴趣的:(利用GDB调试Android里的程序)