下面就以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的代码。 |
|
来自: android之情殇 > 《android》