分享

使用GDB 单步调试Android本地代码 | Bob's Blog

 android之情殇 2012-12-28

下面就以GDB调试Rild为例,来说明如何调试Native进程。

说明

#cmd     表明该命令运行于android设备控制台上
$cmd     表明该命令运行于Linux PC控制台上
(gdb)cmd 表明该命令运行于GDB控制台上

1. 调试已运行的rild

#ps | grep rild

得到rild的进程rild-pid

#gdbserver :5039 --attach rild-pid

或者调试新的rild进程

#gdbserver :5039 rild

2. 用ADB设置转发端口

$adb forward tcp:5039 tcp:5039

3. 在android的platform目录下

$prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb
out/target/product/saarbmg1/symbols/system/bin/rild

4. 设置符号表

(gdb)set solib-absolute-prefix /home/loginname/android-platform/out/target/product/saarbmg1/symbols
(gdb)set solib-search-path /home/loginname/android-platform/out/target/product/saarbmg1/symbols/system/lib

5. 与GDB server连接

(gdb)target remote :5039
(gdb)shared

后面就可以进行调试了

下面是常用的gdb调试命令

(gdb)help [cmd]                            显示命令cmd的帮助
(gdb)bt                                    显示调用堆栈
(gdb)next|n                                执行下一代码
(gdb)step|s                                执行到下一行代码
(gdb)run|r                                 继续运行
(gdb)jump lineno                           执行到指定行为止
(gdb)break|b lineno|function if condifion  设置断点
(gdb)directory|dir dir1:dir2               指定源文件搜索路径

那么如何调试浏览器webkit等android应用的native代码呢?答案是肯定的,笔者成功单步调试了webkit的代码。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多