iOS新手调试
来源:互联网 发布:淘宝售假怎么投诉 编辑:程序博客网 时间:2024/05/16 02:01
1 -> 全局断点
2 -> 调试堆栈
3 -> 打印调试
4 -> 调试工具Bugly
crash案例: (给数组插入了一个空值, 会崩溃)
点击屏幕会出现崩溃, 并且crash默认断点会停留在main函数.
1. 全局断点调试定位:
command + 7跳至断点界面,
运行崩溃会卡在出问题的那一行,
再结合崩溃原因, 可知在这一行给数组插入了一个空值, 导致crash.
2. 调试堆栈:
有些情况全局断点是不起作用的, 这时候结合控制台输出信息查看,
这时候很可能只看懂了crash原因, 就急着在所有文件里查看哪个数组出问题了, 但是一旦文件很大, 找起来会非常麻烦. 其实可以注意一下控制台打印的信息, 称为调试堆栈, 先运行的代码在下面显示, 注意看图中画红线的部分, 先调用了ViewController的touchesBegan方法, 再创建了一个NSArray数组, 接着就在初始化的时候停住了, 此时很好的定位了,在ViewController中查找touchBegan方法, 从而找到出问题的数组.
3. 打印输出调试:
在开发过程中, 为了方便调试, 通常会在有需要的地方进行打印, 此时可以新建一个pch文件, 自定义NSLog打印, 方便在调试阶段和上线之后的代码调试, 具体做法如下:
步骤一: 新建一个pch文件, 在并添加pch文件关联, 具体做法如下图:
接下来修改pch文件内容,
添加完之后会发现工程中所有的NSLog变为了褐色, 并且能正常打印, 一旦产品上线, 所有的打印都不会输出, 更改状态如下图:
当然, 为了让输出更具备调试效果, 打印出方法名和NSLog所在行数, 可以将NSLog宏定义修改为如下:
打印效果如下图:4. 利用Bugly搜集项目开发过程中的错误信息,
进入腾讯Bugly官网,进行登录注册app, 下载集成SDK等操作, 具体如下图:
可以看到, 此时运行程序崩溃还是搜集不到错误信息的, 原因为上面提到过的, 崩溃会卡在某一行, 那是一个崩溃断点, 如下图:
解决方法为把程序退出后, 直接在测试机上点开, 发现程序会闪退, 此时再去Bugly崩溃日志页面就可以看到捕获的错误日志了
发现搜集到的错误信息和调试阶段在调试堆栈中输出的信息一致, 所以当产品已上线发现有Bug时, 用Bugly调试能更快的定位错误地点.
值得注意的是, 要使用Bugly, 在appdelegate中, bugly的代码需要放在第一句, 这样才能够对以后的所有代码起作用.
以上是本人开发过程中常用的一些调试方法, 希望对各位看官有所帮助, 谢谢支持~~
- iOS新手调试
- iOS-新手学习之程序断点调试
- 新手iOS
- iOS新手
- 程序调试-新手
- 程序调试-新手2
- iOS新手开发总结
- iOS设计新手指导
- IOS新手常见错误
- iOS设计新手指导
- iOS开发新手
- iOS 新手引导页面
- ios新手指引
- 新手配置 PHP 调试环境
- java新手系列 -- 调试程序
- c++新手之如何调试
- IOS 调试
- iOS 调试
- Effective Java 2.0_中英文对照_Item 5
- python1
- 18. 4Sum (Runtime Error)
- Tomcat安装及环境变量配置二
- poj1191 棋盘分割
- iOS新手调试
- win7 64位系统安装jupyter
- JSP常用指令
- NOIP2007矩阵取数游戏
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(25)
- mysql innobackupex xtrabackup 大数据量 备份 还原
- Webservice - Demo : Hello + Name (服务器篇)
- 【Hadoop】学习前提
- hdu 2510 符号三角形