[转]gdb 调试 objc
源:http://bbs.pediy.com/showthread.php?t=159549
3. 在没有 symbols的情况下,想要下断 objc method 或者 private framework 里面的 method 就比较麻烦点:
一种可以通过 class-dump 加参数 -A 导出没有 impl 的 相对地址, 然后用gdb info shared
获取 每个模块的 加载基址, 来算出实际 地址, 下断 , 不过这种方法 我算到现在 还没精确断成功过, = =
还有一种 比较简单有效, 可以通过 objc_getClass 和 class_getInstanceMethod获取 私有类的 实例, 然后通过 method_getImplementation, 获取指定 impl 的 地址, 然后下断:
b *((long)method_getImplementation((long)class_getInstanceMethod((long)objc_getClass((char*)"UIApplication"), @selector(deactivate))))
为了方便使用, 可以定义成命令, 放到 .gdbinit 中, 例如:
define bo
b *((long)method_getImplementation((long)class_getInstanceMethod((long)objc_getClass((char*)"$arg0"), @selector($arg1))))
end
之后只需要:
bo UIApplication deactivate
bo SBIconView touchesBegan:withEvent:
就行了。。
[转]gdb 调试 objc的更多相关文章
- GDB调试命令小结
1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方 ...
- GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...
- gdb调试器的使用
想要使用gdb调试程序的话,首先需要gcc -g main.c -o test 然后运行gdb test对程序进行调试 l (小写的l,是list的首字母),用以列出程序 回车 是运行上一个命令 ...
- 20145212——GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 测试代码 #include <stdio.h> short val = 1; int vv = 2; int g(int xxx) { return xxx + ...
- gdb调试PHP扩展错误
有时候,使用PHP的第三方扩展之后,可能会发生一些错误,这个时候,可能就需要更底层的方式追踪调试程序发生错误的地方和原因,熟悉linux下C编程的肯定不陌生gdb 首先,使用ulimit -c命令,查 ...
- gdb调试汇编堆栈过程的学习
gdb调试汇编堆栈过程的学习 以下为C源文件 使用gcc - g code.c -o code -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器: 进入之 ...
- gdb调试
·代码(实验楼中的代码,改了部分数值)命名为test.c int g(int x) { return x + 7; } int f(int x) { return g(x); } int main(v ...
- 20145223《信息安全系统设计基础》 GDB调试汇编堆栈过程分析
20145223<信息安全系统设计基础> GDB调试汇编堆栈过程分析 分析的c语言源码 生成汇编代码--命令:gcc -g example.c -o example -m32 进入gdb调 ...
- GDB调试汇编堆栈
GDB调试汇编堆栈 分析过程 C语言源代码 int g(int x) { return x+6; } int f(int x) { return g(x+1); } int main(void) { ...
随机推荐
- crawler_爬虫_反爬虫策略
关于反爬虫和恶意攻击的一些策略和思路 有时网站经常受到恶意spider攻击,疯狂抓取网站内容,对网站性能有较大影响. 下面我说说一些反恶意spider和spam的策略和思路. 1. 通过日志分析来 ...
- hardware_hp存储映射_方案
修改虚拟磁盘映射方式 每个刀片独立对应映射存储空间 这样就不会造成数据写入冲突, old new 步奏: 创建过程 lun号码 1-155 之间 第二步奏 最后 指定: 就ok了 2012年12月 ...
- DRP学习进化模型
曾经做的就是按照思维做的三级制,这是U .B ,D .坐在坐,开始增加设计模式,增加sqlhelper ,逐渐了解系统可分为只三层,层的,随着学习的不断深入明确了"为什么会出现分层" ...
- href 做导航 特效
<div> <div> <%for (int i = 0; i < 200; i++) { %><%=i.ToString() %> <br ...
- HTTP 错误500.19 -Internal Server Error
原文:HTTP 错误500.19 -Internal Server Error HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021 评论1 字号: ...
- 吞吐量(Throughput)、QPS、并发数、响应时间(RT)对系统性能的影响
首先对吞吐量().QPS.并发数.响应时间(RT)几个概念一直比较模糊,也不知道哪些指标可以较好的衡量系统的性能.今天特意查了些资料做一些记录:首先看一些概念(来自百度百科) 1. 响应时间(RT) ...
- java中HashSet详解
HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSe ...
- ExcelReport源码解析
ExcelReport第二篇:ExcelReport源码解析 导航 目 录:基于NPOI的报表引擎——ExcelReport 上一篇:使用ExcelReport导出Excel 下一篇:扩展元素 ...
- Require.JS 2.0
就在前天晚上RequireJS发布了一个大版本,直接从version1.0.8升级到了2.0.随后的几小时James Burke又迅速的将版本调整为2.0.1,当然其配套的打包压缩工具r.js也同时升 ...
- Ios 从无到有项目 MVVM模式(两)
1.该项目昨天,我认为未来,有三个部分,第一部分是基于一个在线数据查询对聚合,第二部分是xmpp聊天功能,第三部分是很多其他功能. 2.在线咨询,使用的主要技术,它是get要求或post要求,该网上查 ...