xcode调试器,Xcode控制台
看了牛人的这篇文章,感觉真是很有用啊,受益匪浅http://blog..net/kesalin/article/details/7222153
开发环境内置GDB,我们可以在命令行中使用基因组数据库命令来调试我们的程序。下面将介绍一些常用的命令以及调试技巧。
邮局命令:为打印对象的缩写,显示对象的文本描述(显示从对象的描述消息获得的字符串信息)。
比如:
上图中,我使用邮局命令显示一个NSDictionary的内容。注意在左侧我们可以看到词典的一些信息:3个键/值对,显示该词典包含的数据量,而展开的信息显示工业标准结构层次体系(即班级和元类结构关系)。我们可以右击左侧的迪克特,选中"打印字典的描述",则可以在控制台输出词典的详细信息:
打印描述信息:
cfbasichash0x 1001149 e 0[0x 7 fff 7 e 27 ff 40]{ type=不可变dition,count=3,
条目=
0:cf string0x 1000002458[0x 7 fff 7 e 27 ff 40]{ contents= first }=cf string0x 100002438[0x 7 fff 7 e 27 ff 40]{ contents= one }
1:cf string0x 1000002498[0x 7 fff 7 e 27 ff 40]{ contents= second }=cf string0x 100002478[0x 7 fff 7 e 27 ff 40]{ contents= two }
2:cf string0x 1000024d 8[0x 7 fff 7 e 27 ff 40]{ contents= third }=cf string0x 1000024 b 8[0x 7 fff 7 e 27 ff 40]{ contents= third }
}
(广发银行)
(gdb)print(char *)[[dict description]cStringUsingEncoding:4]
$ 1=0x 1001159 c 0“{ n first=one;\ n秒=二;\ n第三次=三;\n}
(gdb)print(int)[dictreaincount]
$2=1
(广发银行)
注:4是nsu TF 8字符串编码的值。
信息命令:我们可以查看内存地址所在信息
比如信息符号内存地址 可以获取内存地址所在的标志相关信息:
(gdb)信息符号0x 00000001000017 f 7
主343insectionLC_SEGMENT ._ _文本/Users/的_ _文本罗兆辉/Library/Developer/Xcode/derived data/runtime system-anzdlhiwvlbizpfureuvenvmatnp/Build/Products/Debug/runtime system
(gdb)infoline *0x 0000001000017 f 7
/用户/罗兆辉/Documents/Study/runtime system/runtime system/main。 m 开始地址0x 1000017 f 7 main 343和endsat0x10000180a main 362的第62行。
显示命令:显示基因组数据库相关的信息。如:显示版本显示基因组数据库版本信息
(广发银行)显示版本
GNU gdb 6。3 .50-2005 08 15(苹果版本db-1708)(世界协调时2011年1月820日32时45分)
版权所有2004自由软件基金会公司。
GDBisfreesoftware,受通用公共许可证保护,您是
在某些情况下,欢迎更改和/或分配副本。
键入"显示复制"以查看条件。
theresabsolutelynowarrantyforgdb .键入"出示保证书"了解详细信息。
此ThisGDBwasconfiguredas为x86_64-apple-darwin .
帮助命令:如果忘记某条命令的语法了,可以使用帮助命令名来获取帮助信息。如:帮助信息显示信息命令的用法。
(广发银行)帮助信息
genericcommandforshowingthings关于正在调试的程序.
Listofinfosubcommands命令:
信息地址-描述符号存放的位置
infoall-registers-所有寄存器及其内容的列表
infoargs-Argumentvariablesofcurrentstackframe
infoauxv -显示下级的辅助向量
信息断点-状态用户-可设置断点
信息捕捉异常可以是caughtinthecurrentstackframe
信息检查点-帮助
信息类-所有对象-类别
.
键入“帮助信息”,后跟yinfosubcommandnamefulldocumentation .
command name abbreviationsarallowedinfunambiguity .
(广发银行)
在系统抛出异常处设置断点
有时候我们的程序不知道崩溃在哪里,崩溃很难重现。保守的做法是在系统抛出异常之前设置断点,特别是在objc_exception_throw处。步骤如下:首先在XCode中按CMD 6,进入断点管理窗口;然后点击右下方添加一个新的符号断点,在符号列输入:objc_exception_throw,然后点击done完成。这样,在调试模式下,如果程序将要抛出异常,它可以在抛出异常的地方被中断。比如在前面的代码中,我让[firstbjctrashtest];抛出异常。在objc_exception_throw设置断点后,程序可以在这段代码处中断,这样我们就可以知道代码哪里出了问题。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。