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调试显示成功了。