(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.
(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公司是一个存在,是你忘了设置其标识符,这是一个非典型的错误(往往是你拼写错了):
改变Segue的标识符“ModalSegue。”再次运行程序, - 等待 - 点选按钮。哇,这次没有再的崩溃!但这里是我们的下一个部分问题 - 我们认为显示表不应该是空的!
Why?
译者按惯例总结一下:
1. 适用storayboard后,要特别注意其中的设置
2. 了解gdb/lldb调试命令真的是又帮助的(当然了解windows debugger也有帮助:))