Android GDB 调试C/C++代码环境搭建
来源:互联网 发布:中国十堰淘宝第一村 编辑:程序博客网 时间:2024/06/05 16:42
在Android操作系统里面,我们调试native 层的C/C++代码,一般用的都是GDB。搭建环境之前,我们需要从google官网上获取到NDK包。
对于GDB调试环境的搭建,我们首先要有gdbserver(运行在手机)和gdbclient(运行在pc),所以我们首先第一步要先获取这两个工具,对于gdbserver,手机上已经自带有,所以无需再获取,对于gdbclient,因为我们正常情况都是在windows下进行调试,所以我们需要在windows下能运行的gdbclient。很幸运,在我们的NDK包里面,提供了能在windows下运行的gdbclient(NDK文件夹/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gdb.exe)。
有了gdbserver和gdbclient下面我们以系统里面的mediaserver为例,进行调试。
1、首先通过adb shell进入手机的linux命令界面,然后输入
gdbserver :1234 /system/bin/mediaserver(其中1234是指端口号,后面的是/system/bin/mediaserver指要调试的程序,也可以用这种方式启动监听:
gdbserver :1234 –attach 进程ID)
2、启动arm-linux-androideabi-gdb.exe,然后输入:
shell adb forward tcp:1234 tcp:1234,接着再输入:
target remote localhost:1234,
这一步输入完成后,在gdbserver端出现:Remote debugging from host 127.0.0.1,这样的信息说明就连接成功了。
3、把带调试信息的mediaserver可执行文件导入到gdbclient,假如我把mediaserver放到我的G盘的根目录下,则可用命令file G:/mediaserver,进行导入。(我们本地编译代码的时候,系统的native层的系统进程之类的,默认编译出来都是带有可调试信息的,在out/target/product/cs02ctc/symbols/system/bin可以找到)
4、把调试代码的库给导入到gdbclient,首先我们把out/target/product/cs02ctc/symbols这个文件夹拷贝到本地,我是拷贝到G盘。然后通过命令set solib-search-path G:/symbols/system/lib和
set solib-absolute-prefix G:/symbols/system.
5、最后我们把我们的代码路径导入到gdbclient(这步很重要,如果没有这操作的话,调试的时候根本就看不到我们的代码):
directory //109.131.7.122/zhaohui/LinGuohong/CS02new/android
//109.131.7.122/zhaohui/LinGuohong/CS02new/android这个是个人的代码路径。
6、输入命令l,就可以看到mediaserver的代码了,下面测试一下。
打断点到waitBeforeAdding这个函数:b waitBeforeAdding;然后输入命令c,等待程序停到waitBeforeAdding,然后单步运行:n,如果单步执行OK的话,说明你前面所有的操作都是正确的!
至此,我们就可以使用GDB命令来调试我们的代码了。
- Android GDB 调试C/C++代码环境搭建
- Editplus搭建C/C++运行环境,包括gdb调试功能
- eclipse调试C/C++代码 环境搭建
- 搭建Android系统C程序调试环境
- linux 下 android ndk-gdb 调试 jni 中的c 代码
- 使用GDB调试Android应用中C/C++代码
- GDB在线调试Android Framework Native C/C++代码
- GDB调试Android代码——环境搭建及调试过程
- 搭建gdb调试环境
- GDB 调试 android 本地 c/c++ 程序
- adb gdb 调试android C/C++程序
- C GDB 调试程序
- gdb调试(c++)
- Windows下gdb调试Android程序环境搭建
- Android emulator中C代码的调试——gdb/gdbservers时遇到的坑
- 使用GDB调试Android NDK native(C/C++)程序
- 使用GDB调试Android NDK native(C/C++)程序
- 使用GDB调试Android NDK native(C/C++)程序
- Mysql基础篇之索引
- free的原型
- 可以修改任意程序(包括SAP标准程序)的程序
- strtus2 验证详细步骤
- 关于产品的一些思考——(三十九)瀑布流加载
- Android GDB 调试C/C++代码环境搭建
- 利用NFS挂载盘进行Oracle备份问题的解决
- 教你如何与程序员好好玩耍
- C++拷贝构造函数详解
- sqlserver 存储过程 返回多个select 结果集
- 关于Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决
- linux断电系统修复
- 国内外优秀的源码网站
- 增加ORACLE归档位置到NFS(转)