xcode调试器,Xcode控制台

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: