
调试
文章平均质量分 88
bobbypapa
这个作者很懒,什么都没留下…
展开
-
MIPS backtrace的实现方案
概述backtrace获取的是当前函数的纵向调用信息。一般思路是,给定当前函数的栈地址和当前运行位置(PC),通过计算得到当前函数的返回地址和上层函数(caller)的栈地址,然后以当前函数的返回地址作为caller的PC,来继续解析caller的返回地址和caller of caller的栈地址,以此类推进行纵向解析。不管什么处理器架构,其GCC工具链提供的libgcc库中,都自带一个unwin...原创 2018-04-11 08:53:52 · 2371 阅读 · 2 评论 -
C++成员函数的拦截方法
概述利用preload方式对动态库中C语言函数调用进行拦截,有时候会达到剑走偏锋的效果。例如,在DVB+Dongle的产品中,我们就采用了这种方案,在不需要修改甚至重新编译原中间件及SDK的前提下,截获了SDK库中的部分接口调用,从而轻松抓取到OSD图层数据及解扰后的视频流。preload原理如下图,图1 注入libhack.so前后的接口调用路径如图,利用ld_preload向应用的进程空间高地...原创 2018-04-11 09:17:27 · 2002 阅读 · 0 评论 -
MySlab--一种特殊的小内存分配器设计
概述设计方案内存布局名词解释span的状态与转移slab对span的管理span对object的管理申请内存的流程从slab中获取span从span中获取object更新span状态紧急内存分配释放内存的流程内存回收(page reclaiming)用户API相关结构体对外接口待优化概述在扩展tcmalloc进行内存诊断追踪时,记录内存的全局链表节点,本身也需要分配内存,如果采用tcmalloc默...原创 2018-04-12 07:57:11 · 327 阅读 · 0 评论 -
tcmalloc库两种用法的符号替换原理
利用LD_PRELOAD来加载tcmalloc库在编译时显式链接tcmalloc库试验试验1:不链接tcmalloc试验2:仅显式链接tcmalloc试验3:显式链接libc和tcmalloc,libc在前试验4:显式链接libc和tcmalloc,tcmalloc在前结论利用LD_PRELOAD来加载tcmalloc库那么用户调用malloc肯定是走到tcmalloc中;在编译时显式链接tcma...原创 2018-04-12 08:01:51 · 2277 阅读 · 0 评论 -
拿到死机backtrace堆栈后如何确认死在哪一行源码(ARM+Android平台反汇编分析举例)
目录Android上如何用debuggerd拿到死机堆栈拿到死机堆栈后如何分析分析backtrace文件反汇编分析.so文件反汇编分析.o文件相关附件Android上如何用debuggerd拿到死机堆栈关于debuggerd的原理,在这里就不赘述了。需要注意两点:1,确保要调试的进程中没有重写信号处理函数。在我们的中间件中,libqin_buslib.s...原创 2019-01-01 11:00:54 · 2796 阅读 · 1 评论