调试
博客专区 > 阿元 的博客 > 博客详情
调试
阿元 发表于2年前
调试
  • 发表于 2年前
  • 阅读 37
  • 收藏 1
  • 点赞 2
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: LLDB&&断点&&控制台&&崩溃类型&&断言&&异常

1.使用LLDB进行调试:

1.1 dSYM文件存储于目标相关的调试信息。创建工程时默认创建DSYM文件

工程下DSYM文件:

 

1.2 断点:

1.2.1 异常断点:程序停在抛出异常的哪行,而不会崩溃在MAIN函数里。

1.2.2符号断点:在symbol里设置关注的符号

使用malloc_error_break[NSObject doesNotRecognizeSelector:]对调试内存相关的崩溃相当帮助,等效异常断点。

 

1.2.3编辑断点:
断点导航面板中 ctrl+点击断点  进行编辑。进行状态设置,比如循环i<1000,可以设置断点 i=500时起作用。而不用遍历到500次。

1.3LLDB控制台

1.3.1 打印标量变量

处理整形或结构体用p  

p(int) self.maAge 

p (CGPoint) self.view.center

po  打印对象

expr   可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。

call 

call即是调用的意思。其实上述的po和p也有调用的功能。因此一般只在不需要显示输出,或是方法无返回值时使用call。 和上面的命令一样,我们依然在viewDidLoad:里面设置断点,然后在程序中断的时候输入下面的命令: 

call [self.view setBackgroundColor:[UIColor redColor]]

继续运行程序,看看view的背景颜色是不是变成红色的了!在调试的时候灵活运用call命令可以起到事半功倍的作用。

常见问题 

上面我们简单的学习了如何使用LLDB命令。但有时我们在使用这些LLDB命令的时候,依然可能会遇到一些问题。 

不明类型或者类型不匹配 

比如下面这个命令。 

(lldb) p NSLog(@"%@",[self.view  viewWithTag:1001])
error: 'NSLog' has unknown return type; cast the call to its declared return type
error: 1 errors parsing expression

如果在使用LLDB命令中发现有 unknown type 的类似错误(多见于id类型,比如NSArray中某个值),那我们就必须显式声明类型。比如上面这个命令,我们得这么修改。 

p (void)NSLog(@"%@",[self.view  viewWithTag:1001])

1.3.2打印寄存器

register read

1.3.3调试脚本编程 适合Python程序员

1.4 NSZombieEnabled标识

利用僵尸对象显示日志到调试器,在非ARC作用很大。在Xcode->Product->  scheme 选择Enable Zombie Objects开启。

1.5不同类型崩溃

EXC_BAD_ACCESS:访问一个被释放的对象或向它发送消息时。

 SIGSEGV:常见原因是不正确的类型转换。

SIGBUS:代表无效内存访问。

SIGTRAP:陷进信号,并非崩溃信号。收到原因不明的SIGTRAP,先清除上次的输出,然后重新构建通常能解决问题。

SIGABRT:中止信号。当SIGABRT出现时,控制台通常会输出大量的信息,说明具体哪里出错了。由于它是可控制的崩溃,在LLDB控制台输入bt命令打印回溯信息。

看门口超时: 固定错误码:0x8badf00d.出现在同步网络调用而阻塞主线程的时候。

 

1.6 断言&&异常:有效的防止程序错误。

异常出现时会中止程序。

可用来记录崩溃日志。

1.7 收集崩溃报告

iTunes Connect下载崩溃报告。

第三方崩溃报告服务:

集成SDK,负责上传dSYM文件到他们自己的服务器。

免费:TestFlight   桌面客户端

付费:HockyApp

 

参考文章:

http://my.oschina.net/u/1244672/blog/615445?fromerr=8f1t5RAh

http://my.oschina.net/u/2340880/blog/665265

http://my.oschina.net/u/1244672/blog/650633?fromerr=bQnCwLIu#OSC_h1_4

Crash文件解析:

http://ios.jobbole.com/82120/

 

共有 人打赏支持
粉丝 6
博文 147
码字总数 87361
×
阿元
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: