【转】Objective-C Class Dump
(转自:http://blog.sina.com.cn/s/blog_4431c7610100x15t.html)
class dump是一个命令行工具,用来监测存储在Mach-O二进制文件理的Objective-C运行时信息。它为类(class),分类(category)和协议(protocol)生成声明信息。这些信息与 otool -ov 命令提供的信息是一样的,但表示得更像正常的Objective-C的声明,所以它更紧凑,更易读
为什么要使用class-dump
对于好奇的人,是一个好工具。你可以看到闭源应用程序,框架(framework)和软件包(bundle)的设计。
http://www.codethecode.com/download/class-dump-3.3.3.dmg (2010-08-08)
http://www.codethecode.com/download/class-dump-3.3.3.tar.bz2
http://bitbucket.org/nygard/class-dump
用法
class-dump [options]
选项可以是
-a 显示实例变量偏移
-A 显示实现地址
–arch <arch> 选择一个指定的架构,如ppc, ppc7400, ppc64, i386, x86_64
-C <regex> 只显示同正则表达式匹配的类
-f <str> 在方法名中查找字符串
-H 在当前目录生成头文件,或者在用-o选项指定的目录生成
-I 对类,目录,协议 按照继承关系(inheritance)进行排序(覆盖-s选项)
-o <dir> 为-H选项指定输出目录
-r 递归扩展framework,并修复VM共享库
-s 按名称对classes和categories进行排序
-S 按名称对方法(method)进行排序
–list-arches 类出文件中的arches,然后退出
–sdk-root 指定 SDK root 路径(完全路径,或者 4.1 , 4.0, 3.2, 10.6 , 10.5, 3.1.3, 3.1.2)
class-dump-x是一个class-dump的修改版,在当时(2008年) class-dump 3.1.2不支持Objective-C 2.0 ABI). Objective-C 2.0 ABI删除了OBJC段,在data段引入了一些新的section. 并且 class/obj的布局也边了。
它不生成@property声明,因为所有的properties被映射到方法了。 不创建@property 元素,这样的源码可以与objc 1.0的编译器兼容
http://iphone.freecoder.org/class-dump-3.1.2-x-1.0.1.tar.bz2 (修改版本)
http://iphone.freecoder.org/class-dump-x (Leopard上运行的二进制)
http://iphone.freecoder.org/class-dump-x-iphone (iPhone运行的二进制)
class_dump_z 是对上面两个的改进
为什么需要另外一个class-dump
因为class-dump-x对ivar offsets的计算也是错误的,并不支持properties
原版的class-dump虽然也支持ABI2 了,但对ivar 的计算依然是错误的
class-dump-z 主要针对 iPhone 程序进行dump, 不支持以下特性
64位(除非以后iPhone上的内存超过4G了)
Objective-C 1.0 ABI(iPhone用2.0)
class-dump-z完全用C++重写,避免动态调用,不像class-dump和class-dump-x那样使用Objective-c写。删除不必要的调用,使得class-dump-z比它的前任们快10倍左右。并且可以在Linux,Mac, iPhone上运行
选项
-p 转换未声明的getters和setters为properties
-h proto 隐藏那些已经出现在 协议中的方法
-h super 隐藏继承来的方法
-y <root> 选择sysroot, 默认是最后一版的iPhoneOS SDK 或者 /
-u <arch> 选择指定的架构( armv6, armv7等)
-a 打印ivar 偏移
-A 打印 实现的VM地址
-k 显示额外的注释
-k -k 显示更多注释
-R 显示指针声明 , int *a 而不是 int* a(因为前者更明显地表达了指针的语义)
-N 保持原始结构名 (不用 CFArrayRef代替 __CFArray)
-b 在 +/- 号之后放一个空格, 也就是 + (void) ,而不是 +(void)
-i <file> 读取并更新签名提示文件
-C <regex> 只显示匹配的types
-f <regex> 只显示匹配的methods
-g 只显示导出classes
-X <list> 忽略所有types(除了categories)
-h cats 隐藏categories
-h dogs 隐藏协议(这哥们太幽默了,上面是cats(分类),这里就是dogs了
-S 将types按字幕顺序排序
-s 将方法按字母顺序排序
-z 按照字母顺序对方法排序,但将class方法和 -init 放在最见面
-H 分离头文件
-o <dir> 将头文件放到这个目录,而不是当前目录
【转】Objective-C Class Dump的更多相关文章
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- PMON failed to acquire latch, see PMON dump
前几天,一台Oracle数据库(Oracle Database 10g Release 10.2.0.4.0 - 64bit Production)监控出现"PMON failed to a ...
- oracle dump数据库
最近正在看老白的<DBA的思想天空>,了解数据块结构,想通过dump data block验证oracle对于行尾的NULL,是不占用存储空间的. 我们先来看一下怎样dump数据块: 1. ...
- Dump类型说明
通过使用windbg提供DbgHelp库中的MiniDumpWriteDump函数在程序崩溃时写dump文件记录程序当时状态,为后续分析问题提供现场. 该函数提供了DumpType参数,让程序员根据具 ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- 转:CentOS, 找不到dump命令:command not found
dump 功能说明:备份文件系统.语 法:dump [-cnu][-0123456789][-b <区块大小>][-B <区块数目>][-d <密度>][-f &l ...
- slave IO流程之二:注册slave请求和dump请求
slave IO流程已经在http://www.cnblogs.com/onlyac/p/5815566.html中有介绍 这次我们要探索注册slave请求和dump请求的报文格式和主要流程. 一.注 ...
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- 认识Java Core和Heap Dump
什么是Java Core和Heap Dump Java程序运行时,有时会产生Java Core及Heap Dump文件,它一般发生于Java程序遇到致命问题的情况下. 发生致命问题后,Java进程有时 ...
- sublime text 乱码生成.dump问题的解决方法
title: sublime text 乱码生成.dump问题的解决方法 tags: sublime text,sublime text 3,.dump,乱码 grammar_cjkRuby: tru ...
随机推荐
- 求教——使用node做表单,刷新浏览器页面,浏览器为什么会重复提交上次所填的信息
最近在学些node,按照<nodejs实战>上的代码做练习,发现有表单重复提交的问题 第一次打开页面,显示如图是get请求 图1 现在我们提交aaa,显示如图,post请求 图2 刷新页面 ...
- python chardet简单应用
python的字符串编码识别模块(第三方库): 官方地址: http://pypi.python.org/pypi/chardet import chardet import urllib # ...
- IFrame 高度自适应的两种方式 .
iframe 高度自适应一般是指: iframe 本身的高度 = 内容高度. 这样做可以使最外层不出现滚动条. 如果网页内容使用了Ajax方式填充内容的话. 由于内容是动态的. 以上方式应该变为: ...
- MSTest、NUnit、xUnit.net 属性和断言对照表
MSTest.NUnit.xUnit.net 属性对照表 MSTest NUnit xUnit.net Comments [TestMethod] [Test] [Fact] Marks a test ...
- [MSSQL2012]First_Value函数
First_Value返回结果集中某列第一条数据的值,跟TOP 1效果一样,比较简单的一个函数 先贴测试用代码 DECLARE @TestData TABLE( ID INT IDENTITY ...
- 一页纸商业计划书 (Business Plan) 模板(转载)
本文转载自:https://blog.eood.cn/business-plan 假如你也有一个 idea ,但是还处于想法阶段,这个商业计划书模板能够帮你理清思路. 这个一页 BP 模板简单实用,分 ...
- [51单片机] TFT2.4彩屏1 [文字显示 画矩形]
>_<:因为要驱动彩屏,所以这里采用STC90C516RD+单片机[51的89C52也行,就是可能内存在接下来的实验中可能会内存不够],晶振尽量采用高一点的,这里采用24MHz的. > ...
- JAXB命名空间及命名空间前缀处理
本篇介绍下JAXB进阶使用,命名空间处理 使用package-info.java添加默认命名空间在需要添加命名空间的包下面添加package-info.java文件,然后添加@XmlSchema注解, ...
- 深入理解 CSS 的 :before 和 :after 选择器(制作select下拉列表美化插件)
原文链接:http://www.cnblogs.com/LY-leo/p/5765598.html 对于 :before 和 :after 选择器,大家并不陌生,但是很少有人会主动去用它们.先解释下它 ...
- paip.c++ 转换 java 解决方案
paip.c++ 转换 java 解决方案 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...