adnroid NDK debug调试 断点无效
2016-09-26 11:23
281 查看
adnroid NDK debug调试 断点无效
要用NDK来DEBUG调试一个android工程,可惜加了断点还是不会在断点处停下,所有的断点处都加了一个勾(像这样
)。
按照网上的各种方法都试了:
1.配置好NDK给工程加上Native Support。
2.生成NDK调试文件,右键项目->properties->C/C++ build->Builder Setting 把默认的Build Command : ndk-build 修改成 ndk-build NDK_DEBUG=1。
3.AndroidManifest.xml文件中Debuggable设为true。
4.启动Cygwin进入当前工程目录。 执行命令 ndk-gdb --force --verbose –start ,在提示符<gdb>下输入quit退出。
5.右键点击工程 ->Debug As->Android Native Application。
可惜还是老样子,debug进的去,但是进去之后所有的断点貌似已经执行完毕。
后来发现有可能是ndk执行完毕后gdbsever才启动,迟了几秒钟,NDK层的代码(jni层??没仔细研究过)在gdbsever启动之前被执行了,则设置在C/C++代码中的断点无法起作用。
知道原因就好办了,有很多种方法,比如在代码执行之前加一个UI界面的控件触发,用触摸屏幕来启动单步调试。又或者在主函数入口处sleep数秒,等待gdbsever的启动。
我是直接在主函数入口处sleep(),debug调试显示成功了。
要用NDK来DEBUG调试一个android工程,可惜加了断点还是不会在断点处停下,所有的断点处都加了一个勾(像这样
)。
按照网上的各种方法都试了:
1.配置好NDK给工程加上Native Support。
2.生成NDK调试文件,右键项目->properties->C/C++ build->Builder Setting 把默认的Build Command : ndk-build 修改成 ndk-build NDK_DEBUG=1。
3.AndroidManifest.xml文件中Debuggable设为true。
4.启动Cygwin进入当前工程目录。 执行命令 ndk-gdb --force --verbose –start ,在提示符<gdb>下输入quit退出。
5.右键点击工程 ->Debug As->Android Native Application。
可惜还是老样子,debug进的去,但是进去之后所有的断点貌似已经执行完毕。
后来发现有可能是ndk执行完毕后gdbsever才启动,迟了几秒钟,NDK层的代码(jni层??没仔细研究过)在gdbsever启动之前被执行了,则设置在C/C++代码中的断点无法起作用。
知道原因就好办了,有很多种方法,比如在代码执行之前加一个UI界面的控件触发,用触摸屏幕来启动单步调试。又或者在主函数入口处sleep数秒,等待gdbsever的启动。
我是直接在主函数入口处sleep(),debug调试显示成功了。
相关文章推荐
- html5新增的元素和废除的元素
- BroadcastReceiver 中dialog的使用
- BroadcastReceiver 中dialog的使用
- BroadcastReceiver 中dialog的使用
- BroadcastReceiver 中dialog的使用
- Android之圆形头像(实现相机拍摄+相册选择+图片裁剪功能)
- Android APK打包流程详解
- iOS开发:AVPlayer实现流音频边播边存
- facebook接入后安装失败,提示"应用未安装"
- mina 心跳机制
- hive的统计函数
- C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式
- 关于div中img,span垂直居中的问题
- android webView 和js交互中需要注意的几点
- JS之值类型与引用类型,及数据类型间的转换
- 第26周-window程序设计(基础篇)-第5章(图形基础)-关于颜色
- Window下搭建ESP8266编译环境
- Android第一行代码学习笔记八----网络技术
- iOS单例详解
- fir.im Weekly - 关于 iOS10 适配、开发、推送的一切