转载:http://www.360doc.com/content/12/1228/11/9462341_256747689.shtml
下面就以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的代码。
时间: 2024-11-02 23:20:31