Android NDK中的C++调试踩坑标记
16lz
2021-01-23
RT,
Android NDK中的C++调试,
GDB调试比较麻烦,在ADT Eclipse中:
1.配置好NDK给工程加上Native Support
2.编译中加上NDK_DEBUG=1
3.然后改造下mk文件:
#APP_DEBUG will be set by android-ndk if NDK_DEBUG=1 is set.ifdef APP_DEBUG ifeq ($(APP_DEBUG),true) CFLAGS+=-O0 -g LOCAL_CFLAGS+=-D_DEBUG APP_OPTIM := debug else CFLAGS+=-O2 -g LOCAL_CFLAGS+=-DNDEBUG APP_OPTIM := release endifendif
即可任意断点调试,
这是理想情况,平时会有各种情况出现,之前经验是多下几个断点就好,
一直没太注意,
今日遇到了一坑,断点无论如何也挂不上,
仔细研究后发现:
1. 目录里千万不能含有空格,否则就是“No symbol table is loaded. Use the "file" command”,一头雾水,哪里出错都不知道;
2. 在Java代码里System.loadLibrary加上断点,可以很好地避免断点无法挂上的情况(按理论上这不会起作用的,Java/GDB 两个Debugger只能启其一);
3. 更好的解决方案就是用libandroid_native_app_glue,纯C/C++实现(NDK内有个例子可以参考);
时间消耗甚久,踩坑留标记,望以飨后人.
更多相关文章
- Android多文件断点续传(三)——实现文件断点续传
- 关于Android PopupWindow中实用Spinner控件点击APP Crash情况整
- Android 设备网络信息的获取(网络类型、网络强度、网络速度、代理
- 【Android】Android如何查看分区情况
- android 多线程断点下载,listview 模式 开始 暂停等功能
- android adb shell 不可用的情况
- Android MediaRecorder实现暂停断点录音功能
- java和Android文件下载断点续传和图片下载代码实现,可直接复制简
- Python获取android设备cpu和内存占用情况