让Xcode的 stack trace信息可读
让Xcode的 stack trace信息可读
昨天在写 iOS 代码的时候,调试的时候模拟器崩溃了。异常停在了如下整个 main 函数的入口处:
|
Xcode 的 Console 界面报出了一些出错信息 , 如下图所示:
我根据 Console 里面的文字提示信息,猜出应该是出现了空指针 nil 的操作。但是具体出错在哪一行,却不知道。最终虽然找到了 bug,但是 debug 的过程确实费了些时间。考虑到这个 stace trace 信息应该对我挺有帮助才对的,所以我就查了一下如何让这原本一堆 16 进制的调用栈信息更可读。于是在 stackoverflow 上找到了 2 个比较好的解决办法,在这里分享给大家。
方法一
该 方法 的步骤是,首先在你的 AppDelegate 中定义一个方法 , 用于处理异常:
|
然后在应用启动时,设置这个方法作为自己的自定义异常回调:
|
完成之后,当对于上面的异常,在定义了这个回调之后,Log 信息变成如下所示,出错行一目了然,根据下面的可读的 stack trace,我一下就可以找到是 QuestionParser 这个类的第 378 行导致的异常,进而可以跳到出错行分析原因,很容易就把 bug 修复了。
|
方法二
方法二相比方法一更加简单,具体做法是在 Xcode 界面中按 cmd + 6 跳到 Breakpoint 的 tab,然后点击左下角的 + 号,增加一个 Exception 的断点,如下图所示。这样,当异常出现时,会自动停在异常处,而不会抛出到 UIApplicationMain。拿我的有 bug 的程序来说,代码会自动断在 QuestionParser 这个类的第 378 行。
总结
其实以前 Xcode 是能显示出可读的 stack trace 信息的,似乎到了 Xcode4.2 以后就出问题了。所以上面提到的 2 个办法相当于 walk around 解决了 Xcode4.2 以后出现的 bug。如果该文章对你有用,希望你能帮我点击下面的分享按钮,分享给更多朋友,同时也帮我宣传一下博客,这将有助于我分享更多的心得给大家,Have fun!
让Xcode的 stack trace信息可读的更多相关文章
- 让XCode的Stack Trace信息可读
程序报错信息如下:
- XCode的 Stack Trace,调试时抛出异常,定位到某一行代码
在Xcode调试程序的时候,总是会出现不知道错误在什么地方的问题,很是捉急,现在又一个办法,可以具体定位到错误行的代码,试一下吧?超级好用 操作很简单: 1.在XCode界面中按cmd + 6快捷键, ...
- 怎么从代码中拿到栈回溯信息(call stack trace)
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:怎么从代码中拿到栈回溯信息(call stack trace).
- 三、jdk工具之jstack(Java Stack Trace)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- dump 分析模式之 INCORRECT STACK TRACE - djm2005dy的专栏 - 博客频道 - CSDN.NET
Dump 分析模式之 INCORRECT STACK TRACE dump 分析模式之 INCORRECT STACK TRACE 翻译自 MDA-Anthology Page288 初学者常犯的错 ...
- 项目跑起来之后,一会儿后台就会报错Illegal access: this web application instance has been stopped already. Could not load [com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask]. The following stack trace
一月 24, 2016 6:42:54 下午 org.apache.catalina.loader.WebappClassLoaderBase checkStateForResourceLoading ...
- This is very likely to create a memory leak. Stack trace of thread
1.错误描述 警告: The web application [cmp] appears to have started a thread named [Abandoned connection cl ...
- java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE 的理解
[2013-12-06 11:06:21,715] [C3P0PooledConnectionPoolManager[identityToken->2tl0n98y1iwg7cbdzzq7a|7 ...
- JavaScript 查看stack trace
How can I get a JavaScript stack trace when I throw an exception? Edit 2 (2017): In all modern brows ...
随机推荐
- java中 this 和super的用法
通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...
- objective-c常用方法列表(总结)
第1章 Objective-C学习环境准备 1.1 Objective-C基础 1.1.1 Objective-C的发展历程 1.1.2 Objective-C语言的特点 1.1.3 技术架构 1.2 ...
- windbg的高级玩法
详见附件 jpg改zip
- Angular.js 以及个人学习网站
Angular.js 教程 http://www.360doc.com/content/14/0414/15/14416931_368816305.shtml web前端学习: 慕课网:http:/ ...
- SU Demo之01MakingData--02MultiShot
- 单机c1000k连接
单机c1000k连接即单机实现百万连接,首先要注意的是连接是虚拟的逻辑的,连接最终落于 网卡,清晰概念才能更深入更清晰的想出问题的解决办法. 参考 http://www.ideawu.net/blog ...
- BestCoder Round #65
博弈 1002 ZYB's Game 题意:中文 分析:假定两个人是绝顶聪明的,一定会采取最优的策略.所以如果选择X的左边的一个点,那么后手应该选择X的右边对称的点,如果没有则必输,否则必胜,然后再分 ...
- Python基础2- Hello,world
第一个程序Hello,world! 交互式编程:在终端窗口中输入:python回车后直接进入python交互模式,然后在提示符>>>后面输入:print 'Hello,world!' ...
- nginx实现ssl反向代理实战
登录认证account.free4lab.com需要提供ssl登录接口,ssl的原理看这篇博文,因为前面有反向代理nginx,所以这个需求就放在nginx实现了,否则可以放在web容器(jetty,t ...
- ural 1346. Intervals of Monotonicity
1346. Intervals of Monotonicity Time limit: 1.0 secondMemory limit: 64 MB It’s well known that a dom ...