Android NDK中的C++调试踩坑标记
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
endif
endif
即可任意断点调试,
这是理想情况,平时会有各种情况出现,之前经验是多下几个断点就好,
一直没太注意,
今日遇到了一坑,断点无论如何也挂不上,
仔细研究后发现:
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 NDK中的C++调试踩坑标记的更多相关文章
- React-Native 真机调试踩坑指南
继上一篇基础安装踩坑继续我们的踩坑之旅,备注一下以下仅针对Mac环境-- 安卓 1.adb 找不到命令? Adb的全称为Android Debug Bridge,就是起到调试桥的作用,真机调试安卓必备 ...
- 关于Android NDK中调用第三方的动态库
因为最近在整合Android 上RTSP播放器的网络库,因需要调用自己编译的网络库,调用一直出现问题,开始时是直接在Android.mk 中加入LOCAL_SHARED_LIBRARIES := li ...
- .Net程序员之不学Java做安卓开发:Android Studio中的即时调试窗口
对学.Net的人来说,JAVA开发是一场噩梦. .net中的即时窗口,调试时直接在里面写代码,对程序中的各种方法/属性进行调用,很方便. Android Studio中找了好久,参考如下网址,也有类似 ...
- 谈谈Android NDK中动态链接库(.so文件)的优化
做了不少NDK相关的工作,不知道别人有没有同样的困惑,经常在编译C/C++代码的时候会出一些error或者warning,然后在网上搜,发现在Android.mk或者Application.mk文件中 ...
- ios浏览器调试踩坑(1)----mescroll.js和vue-scroller
主要记录在ios浏览器出现触摸无限加载的情况 使用vue-scroller和mescroll.js/mescroll.vue先踩ios浏览器默认滑动会影响mescroll的方法调用. 首先给公共js加 ...
- Android: NDK中的Android.mk和Application.mk
1. 简介 Android.mk 可用来描述要编译的某个具体模块的相关信息.比如:指定编译该模块时所需要的源文件.编译该模块时要链接的库文件.该模块编译完成后生成的库的名字等等.Applicatio ...
- cordova开发插件,并在android studio中开发、调试
之前用过cordova Lib包装H5页面,自己写插件,但做法是野路子,不符合cordova插件的开发思路,这次项目又需要包装H5页面,同时需要自定义插件.所以又折腾了一次cordova自定义插件. ...
- Redis中的Scan命令踩坑记
1 原本以为自己对redis命令还蛮熟悉的,各种数据模型各种基于redis的骚操作.但是最近在使用redis的scan的命令式却踩了一个坑,顿时发觉自己原来对redis的游标理解的很有限.所以记录下这 ...
- Android WebView中那些不得不解决的坑~~
前面那张hybrid开发心得 有人问 怎么解决不用onJsPrompt 来回调js函数的问题.其实很简单,就是在在你的jscalljava回调函数内 另外开个线程去load js代码即可: wb.po ...
随机推荐
- 根据配置文件加载js依赖模块(JavaScript面试题)
面试题目 根据下面的配置文件 module=[ {'name':'jquery','src':'/js/lib/jquery-1.8.3.js'}, {'name':'swfobject','src' ...
- JAVA通过XPath解析XML性能比较(原创)
(转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...
- Web调试工具——Fiddler介绍
Fiddler 教程 Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发 ...
- django with mysql (part-1)
step01: django-admin.py startproject dj01 step02: cd dj01 tree step03: python manage.py runserver Th ...
- JavaScript简介及基础知识(1)
1.JavaScript是什么—它是个脚本语言,需要宿主文件,它的宿主文件是html文件. Javascript是一种脚本语言,比HTML要复杂.不过即便你先前不懂编程,也不用担心,因为Javascr ...
- Leetcode 130 Surrounded Regions DFS
将内部的O点变成X input X X X XX O O X X X O XX O X X output X X X XX X X XX X X XX O X X DFS的基本框架是 void dfs ...
- JQ中 trigger()和triggerHandler()区别
既然使用了trigger和triggerHandler,那么你应该了解了他们的差别了. trigger():在每一个匹配的元素上触发某类事件. triggerHandler():这个特别的方法将会触发 ...
- Android CountDownTimer倒计时器的使用
http://blog.csdn.net/freesonhp/article/details/25904047 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了 ...
- 取消 virtualStore 注册表[启用和禁止 UAC虚拟化]
近日发现,在win2008R2 x64下运行的服务器程序,其注册表读取路径为: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\SZDomain\itvc1] 但是经 ...
- windows下用golang连接mssql
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 安装Microsoft SQL Server Native Client 安装golang的mssql驱动 写测试代码 ...