为什么崩溃就跑到汇编里面了和po打不出来对象的值

来源:互联网 发布:外国搜图软件 编辑:程序博客网 时间:2024/04/29 02:03

  在obj-c系列博文里,我们粗浅的介绍了obj-c的一些语法以及F库中的一些标准类的使用,但是实际编写拿得出手的APP还是得老老实实在os x上用Xcode写啊!最近上网无意中发现还有支持os x和ios的ruby框架啊,手又痒了!另外swift也推出了,Xcode6.0beta也装了,这个世界诱惑就是多啊!不过言归正传,在这一系列博文里还是诚恳的记录下使用Xcode过程中出现的问题以及解决方法吧。

    OK!言归正传,在使用Xcode6beta时(以下全部简称x6b),发现设置断点,中断后直接跳到汇编视图,这根本不是一般人需要的哦(虽然本猫不是一般人,是特殊猫啊!偷笑),其实这个是可以设定的哦,在断点断下之后,菜单中依次选择Debug->Debug Workflow后,将总是显示汇编行勾去掉即可:


这时再中断时,源代码行可以正确显示鸟:


    我们知道在x6b调试时后台使用的是lldb调试器,我们可以在调试时使用很多调试命令查看和设置代码中变量的值(类似于VS环境),看到上图红框部分了吗?就是这个区域啊!不过我在Debug Area中输入po val_name却显示错误哦:

(lldb) po now

error: warning: couldn't get cmd pointer (substituting NULL): extracting data from value failed

Couldn't materialize: couldn't get the value of variable now: no location, value may have been optimized out

Errored out in Execute, couldn't PrepareToExecuteJITExpression

咋回事呢,其实这是由于你工程编译目标类型是release而不是debug的缘故,因为没有对象的额外调试信息,自然显示不出来啦,解决很简单在x6b菜单依次选择Prouct->Scheme->Edit Scheme:


然后在弹出的窗口中将Release改为Debug就可以啦:


然后在lldb中使用po指令就可以看见对象内容了哦:

(lldb) po now

2014-07-04 09:45:19 +0000

0 0
原创粉丝点击