iOS指南系列:如何解决奔溃问题-深入调试

转自: http://blog.csdn.net/gnicky/article/details/7461574
 

iOS指南系列:如何解决奔溃问题-深入调试

分类: iOS   765人阅读  评论(0)  收藏  举报

(lldb) po $eax

(unsigned int) $1 = 112518480 Receiver (<MainViewController: 0x6d80ec0>) has no segue with identifier 'ModalSegue'

一上来就看到这两行东西,是不是觉得有点用,但又莫名其妙呢

与调试器交朋友
 Making Friends With the Debugger

对于最近的这个crash点,代码如下:

	[self performSegueWithIdentifier:@"ModalSegue" sender:sender];

在调试窗格中没有任何消息。您可以像以前那样,按继续执行程序按钮,但你也可以在调试器中键入一个命令来得到错误信息。这样做的好处是可以留在同一个地方暂停应用程序。
如果你运行这个模拟器,你可以(lldb)提示符后键入以下内容:

(lldb) po $eax

LLDB is the default debugger for Xcode 4.3 and up. 

如果你使用的是旧版本的Xcode,那么你有GDB调试器(这对linux开发人员而言,很熟悉的)。他们采用同样的一些基本的命令,所以,如果您的Xcode提示说(GDB),而不是(lldb),你应该仍然能够按照这个命令没有问题。 顺便说一下,你可以切换在Xcode编辑器之间的不同调试,可以通过project schema编辑选项,选择debugger,来个本地的图更能说明问题:)

po命令代表“打印对象” print object(会不会让你想起.net clr debug中的 !do !pe=print exception)。符号$ EAX是指CPU寄存器之一。在异常的情况下,该寄存器将包含一个指针的NSException对象。注:$EAX只适用于模拟器,如果你在调试设备,你需要使用寄存器$ R0。
例如,如果键入:

(lldb) po [$eax class]

你也可以看到如下的输出

(id) $2 = 0x01446e84 NSException

数字并不重要,但很明显,你在这里处理与NSException对象。
你可以调用这个对象的任何从NSException方法。例如:

(lldb) po [$eax name]

这会给你异常的名称,在这种情况下NSInvalidArgumentException,

(lldb) po [$eax reason]

这会给你 error message:

(unsigned int) $4 = 114784400 Receiver (<MainViewController: 0x6b60620>) has no
segue with identifier 'ModalSegue'

Note: When you just do “po $eax”, it will call the “description” method on the object and print that, which in this case also gives you the error message.

这样解释这是怎么回事:你试图执行名为“ModalSegue”的 Segue ,但显然在MainViewController没有Segue公司。
storyboard并不表明Segue公司是一个存在,是你忘了设置其标识符,这是一个非典型的错误(往往是你拼写错了):

Giving the segue an identifier.

改变Segue的标识符ModalSegue。再次运行程序, - 等待 - 点选按钮。哇,这次没有再的崩溃!但这里是我们的下一个部分问题 - 我们认为显示表不应该是空的!

Why?

译者按惯例总结一下

1. 适用storayboard后,要特别注意其中的设置

2. 了解gdb/lldb调试命令真的是又帮助的(当然了解windows debugger也有帮助:))




这里还有一些: 
http://blog.csdn.net/gnicky/article/details/7459238

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值