objective-c 编程的几个调试技巧

1、gdb

     调试终端窗口是一种与gdb进行交流的途径。当程序是终止或者是停在断点处时,你可以发送命令给gdb。当出现gdb提示符(prompt)的时候你可以与gdb进行交互。

     gdb command:http://developer.apple.com/library/mac/#documentation/DeveloperTools/gdb/gdb/gdb_4.html

     xcode自动的处理你的命令,并在Debugger Console中显示相应的值。

2、"po" print object

       po :输出objective-c对象的文本表现形式。

po stringDictionary

       在这种情况下,gdb调用description方法,这个description方法被始终用来从对象产生字符串在cocoa中,你可以覆盖它并提供一个字符串用来表示你的对象。

{ firstKey = firstObject; secondKey = secondObject; thirdKey = thirdObject;}

3、xcode 数据格式化

      如果调试器仍人停留在同一行,这时候你在xcode中打开Debugger window,参数变量列表将包括全部d额字符串字典。对于字典对象来说,xcode将会显示key/value pairs在摘要栏位中。

       这信息来自于“Data Formatter”, 它默认的建立字典,你可以学习它们在Xcode Debugging Guide: Using Data Formatters。尤其值得一提的是,一个数据格式告诉xcode怎样取得需要的数据并展示在栏位中。

       如果我们右击鼠标右键在字符串字典行,将会显示一个不同的数据格式在Debugger window中,如果你选择“Print Description to Console"在上下文菜单中。

Printing description of stringDictionary:<CFDictionary 0x35edd0 [0xa0b06174]>{type = immutable, count = 3, capacity = 3, pairs = ( 0 : <CFString 0x2090 [0xa0b06174]>{contents = "secondKey"} = <CFString 0x2080 [0xa0b06174]>{contents = "secondObject"} 1 : <CFString 0x20b0 [0xa0b06174]>{contents = "thirdKey"} = <CFString 0x20a0 [0xa0b06174]>{contents = "thirdObject"} 3 : <CFString 0x2070 [0xa0b06174]>{contents = "firstKey"} = <CFString 0x2060 [0xa0b06174]>{contents = "firstObject"})}

       除了数据格式化,“Print Description to Console”将会输出同样的信息在使用“po”命令的时候。在这种情况下,它清楚的输出字典更多更详细的描述。包括信息的类型,尤其是使用CFDictionary数据格式化(它并不是标准定制的Xcode数据格式化方式)。

4、"print"命令

       "po"命令在gdb中只是显示对象调用description的结果。然而使用更加通用的“print”命令,我将可以做更多的事情。

       我可以使用如下命令:

print (char*)[[stringDictionary description] cString]

       上面的命令将会输出:

$1 = 0x360031 "{\n firstKey = firstObject;\n secondKey = secondObject;\n thirdKey = thirdObject;\n}"

        它显示了同样的数据表示和"po",仅仅是没有很好的数据格式。

        我同样可以使用如下命令:

print (int)[stringDictionary retainCount]

        用来解决保留字典的引用计数,帮助我们解决内存疑问或者没有被释放的对象。

        在xcode中"po"命令和"Print Description to Console"是等价的,“print”命令也是差不多的。你可以打开窗口描述从 Run->Show->Expressions menu。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值