android如何使用ndk-gdb调试native程序
2012-06-25 15:26
281 查看
程序中一些逻辑是用C写的,使用jni调用C代码,使用基本的打log的方式很难查看大型数组,了解到android ndk sdk中有个工具叫ndk-gdb可以很方便地对c代码进行调试,使用过程并不顺利,
程序中一些逻辑是用C写的,使用jni调用C代码,使用基本的打log的方式很难查看大型数组,了解到android ndk sdk中有个工具叫ndk-gdb可以很方便地对c代码进行调试,使用过程并不顺利,遇到两个错误,耗时一周终于解决。
如果是在windows下,需要安装cygwin。
首先,在cygwin命令行下进入到你工程的根目录下
如果你要调试的程序已经在运行了,直接运行ndk-gdb
如果你要调试的程序没有运行,可以使用ndk-gdb --start
键入ndk-gdb命令,会出现一系列库文件加载的信息,这些库可能会加载失败,不过没有关系
出现<gdb>提示符,输入help命令可以查看一系列命令
使用l命令列出c文件的内容,但是遇到 No symbol table is loaded. Use the "file" command.
使用以下命令加载需要调试的so文件:
file obj/local/armeabi/libsearch-algorithm.so
使用list或者l可以查看加载的c文件。
使用b 100,在c文件的第100行设置断点。
使用c或者continue命令继续运行程序。
出现错误:
Continuing.
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x11a0: Input/output error.
错误原因:使用ndk-gdb --start 启动程序第一个activity,但是此时so文件并没有被加载。
解决方法:首先打开程序并使用,在保证so文件已经被使用的情况下,调用ndk-gdb命令调试程序进程。
正确流程:
1.创建一个模拟器或者使用真机运行想要调试的程序,确保so文件已经被加载。
2.在此程序的根目录下调用ndk-gdb,出现gdb提示符。
3.使用l命令,应该可以打印出c文件。
4.使用b 10,可以在c文件的第十行打印断点。
5.使用c命令恢复程序运行。
6.更多操作请参考gdb使用手册
程序中一些逻辑是用C写的,使用jni调用C代码,使用基本的打log的方式很难查看大型数组,了解到android ndk sdk中有个工具叫ndk-gdb可以很方便地对c代码进行调试,使用过程并不顺利,遇到两个错误,耗时一周终于解决。
如果是在windows下,需要安装cygwin。
首先,在cygwin命令行下进入到你工程的根目录下
如果你要调试的程序已经在运行了,直接运行ndk-gdb
如果你要调试的程序没有运行,可以使用ndk-gdb --start
键入ndk-gdb命令,会出现一系列库文件加载的信息,这些库可能会加载失败,不过没有关系
出现<gdb>提示符,输入help命令可以查看一系列命令
使用l命令列出c文件的内容,但是遇到 No symbol table is loaded. Use the "file" command.
使用以下命令加载需要调试的so文件:
file obj/local/armeabi/libsearch-algorithm.so
使用list或者l可以查看加载的c文件。
使用b 100,在c文件的第100行设置断点。
使用c或者continue命令继续运行程序。
出现错误:
Continuing.
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x11a0: Input/output error.
错误原因:使用ndk-gdb --start 启动程序第一个activity,但是此时so文件并没有被加载。
解决方法:首先打开程序并使用,在保证so文件已经被使用的情况下,调用ndk-gdb命令调试程序进程。
正确流程:
1.创建一个模拟器或者使用真机运行想要调试的程序,确保so文件已经被加载。
2.在此程序的根目录下调用ndk-gdb,出现gdb提示符。
3.使用l命令,应该可以打印出c文件。
4.使用b 10,可以在c文件的第十行打印断点。
5.使用c命令恢复程序运行。
6.更多操作请参考gdb使用手册
相关文章推荐
- 如何使用arm-eabi-gdb调试android c/c++程序
- 如何使用arm-eabi-gdb调试android c/c++程序
- 如何使用gdb调试android webkit内核代码
- 如何使用gdb调试android webkit内核代码
- 如何使用arm-eabi-gdb调试android c/c++程序
- 使用ndk-gdb调试android native程序
- Android使用ndk-gdb调试jni程序
- 如何使用arm-eabi-gdb调试android c/c++程序
- 详解如何使用VisualStudio高效开发调试AndroidNDK
- 使用eclipse/ndk-gdb对java/native code联合调试
- Android源码学习之如何使用eclipse+NDK
- Android native debug: 手动使用gdbserver远程调试C代码
- 如何使用android的ndk建立native的开发环境
- 如何使用gdb结合qemu调试linux内核源码
- Android 软件开发之如何使用Eclipse Debug调试程序详解
- 如何使用gdb结合qemu调试linux内核源码
- Android源码学习之如何使用eclipse+NDK
- 如何使用Android中的DDMS进行调试
- Android 软件开发之如何使用Eclipse Debug调试程序详解
- [016] 如何使用真机调试Android应用 .