NDK打印调用堆栈
虽然android源码里有android::CallStack用来打印堆栈,但是NDK里面并没有包含它,所以不能直接调用它,所以要尝试用动态调用的方式来实现。
我测试的手机是安卓8.1.0版本,android::CallStack位于/system/lib/libutils.so库中,使用ida pro打开libutils.so,找到android::CallStack::CallStack函数 .text:0000996C ; _DWORD __fastcall android::CallStack::CallStack(android::CallStack *__hidden this, const char *, int) .text:0000996C EXPORT _ZN7android9CallStackC2EPKci .text:0000996C _ZN7android9CallStackC2EPKci ; DATA XREF: LOAD:0000158C o .text:0000996C ; LOAD:00001CDC o
可以看到函数的导出符号为_ZN7android9CallStackC2EPKci,因为它是类的构造方法,在反编译代码中第一次参数是一个隐藏的this指针,这个指针用来指向对象本身,动态调用我们需要自己malloc这个指针。void* handle = dlopen(NULL, RTLD_NOW); //查找函数导出符号 void* (*android_CallStack_CallStack)(void*, const char *, int) = (void *(*)(void *, const char *, int))dlsym(handle_121, "_ZN7android9CallStackC2EPKci"); //malloc出android::CallStack指针,这里也可以写死数字,8.1.0中android::CallStack大小为20 void* stack = malloc(sizeof(android::CallStack)); //将堆栈信息打印到logcat中,Log Tag为jyy android_CallStack_CallStack(stack, "jyy", 1);
如果担心这种方式会造成内存泄漏,也可以在打印完堆栈后主动调用android::CallStack的析构函数,并在最后free掉this指针 .text:00009B20 ; void __fastcall android::CallStack::~CallStack(android::CallStack *__hidden this) .text:00009B20 EXPORT _ZN7android9CallStackD2Ev .text:00009B20 _ZN7android9CallStackD2Ev ; CODE XREF: android::ProcessCallStack::update(void)+E0 pvoid (*free_CallStack)(void*) = (void (*)(void*))dlsym(handle_121, "_ZN7android9CallStackD2Ev"); //主动调用析构函数 free_CallStack(stack); //free this指针 free(stack);
这样就可以主动打印NDK的调用堆栈了
交通部9大举措规范网络货运改善停车休息在7月29日的交通运输部例行发布会上,我们得到了一个重要信息上半年,完成营业性货运量247。5亿吨,比2020年同期增长24。6,同时2020年,全国1800多万货车司机完成了全社
物流企业税负压力太大,转型网络货运能否破解税负困境?近几年来,随着互联网的高速发展,物流行业增长速度也居高不下。但是传统物流行业长期存在着两个难题一是空载率高,运输成本居高不下二是纳税主体难界定,税收流失严重,行业亟待规范。根据交通
隔壁邻居总是把垃圾放门口,楼道都有股味,特别恶心,怎么办?要是我,直接物业投诉邻居总是把垃圾放在门口,整个楼道有怪味,影响到了你的心情,这个问题好解决。1力气是贱才用了就来,邻居也不一定心眼不好,或许就是一个邋遢的人,楼道邻居,公共面积仅
国内外有哪些著名的凶宅?天津西开教堂天津有个著名的西开教堂,据说民国时西开教堂的神父是德国人,长着鹰嘴虎胸,相貌很丑陋,他生性凶残,经常购买穷人家的孩子,然后把这些小孩杀死,熬出他们身上的脂肪作肥皂。19
屈原投江投的汨罗江在现在的哪条江?屈原投江而死的汩罗江现在在湖南省岳阳市。汨罗江口汇入洞庭湖。汨罗江分为南北两支,南支称汨水,为主源北支称罗水,至汨罗市屈谭(大丘湾)汇合称汨罗江。汨罗江全长253公里,流域面积达5
武松打虎放到现代会被判几年?现在的人别说打虎了,爬到景阳冈不累趴下就不错了如果老虎主动进攻要吃掉武松,武松为了自卫将老虎打死,不需负任何责任!放在当今社会,武松打虎一定会负刑事责任,因为国家法律规定老虎是一级
你觉得刘涛比较有气质还是韩雪?各有千秋,非要选的话我选我自己都是普通人。个人认为刘涛更有亲和力,更招人喜爱,气质是一个人的内在和品质的展示,有一种人看似很有气质,从容颜举止,做事风格一颦一笑,给人一种拒人千里或
打破贤者时间的罪恶,爱必思003助你打破关系隔阂其实关于完事之后的状态,每个人都有不同的心得,但情感变化大致都是一样的,那就是无欲无求空虚孤独于是人们把这段无欲无求的时期统称为贤者时间。有人说贤者时间最适合解难题,也有人说贤者时
金融科技名不副实?!为他们提供技术的其实是5月9号,创业邦2018demochina创新中国春季峰会在北京举行,超过150位一线投资机构与创业领袖集皆聚集于此,共同见证了中国创新企业的新生力量的诞生。创业邦中国创新成长企业
JEETAirPlus蓝牙耳机配置逆天,杀入全网同价位销量前三近年来JEET蓝牙耳机以燎原之势燃爆数码圈,而今年7月JEET新推出的真无线蓝牙耳机JEETAirPlus,更是以逆天的配置征服了更多的用户,杀入全网同价位销量前三(见下图)!说J
全网爆火!JEETAirPlus蓝牙耳机宝藏库配置性价比无敌燃爆这个暑假的,除了居高不下的气温外,在蓝牙耳机圈内,JEET推出的旗舰机皇人气也十分爆火。JEETAirPlus搭载千元以内最顶级配置,在评测达人拆机之后盛赞为宝藏库。JEETA