在Objective C代码中查找异常 [英] Finding exception in Objective c code

查看:58
本文介绍了在Objective C代码中查找异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用X代码3.1 iphone SDK 3.0 beta 5在iphone(OS 2.0)上调试我的应用程序.我的应用程序崩溃,提示信息 *由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* -[NSCFArray insertObject:atIndex:]:超出范围(8)的索引(8)'2009-05-23 17:13:32.304 myApp [405:5a07]堆栈:(808163835,806099672,807978623,807978527,812332907,812067179,812067103,126035,812081649,812081343,826526801)

I am debugging my application on iphone (OS 2.0) using X-code 3.1 iphone SDK 3.0 beta 5 . My application crashes giving message * Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSCFArray insertObject:atIndex:]: index (8) beyond bounds (8)' 2009-05-23 17:13:32.304 myApp[405:5a07] Stack: ( 808163835, 806099672, 807978623, 807978527, 812332907, 812067179, 812067103, 126035, 812081649, 812081343, 826526801 )

在gdb中,当我发出命令时(gdb)信息行126035行号126035超出了"/Users/videomac/manish/EXPLab/2009-05-18-12-27 myApp/main.m"的范围.

In gdb when I give commands (gdb) info line 126035 Line number 126035 is out of range for "/Users/videomac/manish/EXPLab/2009-05-18-12-27 myApp/main.m".

(gdb)信息行* 126035"/Users/videomac/manish/EXPLab/2009-05-18-12-27 myApp/Classes/PlaybackThread/Playback.m"的第527行始于地址0x1ec52<-[[Playback startPlaybackThread:] + 514>0x1ec6a<-[播放开始播放回播线程:] + 538>.

(gdb) info line *126035 Line 527 of "/Users/videomac/manish/EXPLab/2009-05-18-12-27 myApp/Classes/PlaybackThread/Playback.m" starts at address 0x1ec52 <-[Playback startPlaybackThread:]+514> and ends at 0x1ec6a <-[Playback startPlaybackThread:]+538>.

确实意味着崩溃是由于我的方法[Playback startPlaybackThread:]中的代码引起的那么"+514"和"+538"的含义是什么呢?

does that means the crash is due to code in my method [Playback startPlaybackThread:] then what is meaning of the no +514 and +538 do they signify line no?

还有其他方法可以确定崩溃原因吗?

Is there any other way to locate reason of crashes?

推荐答案

查找异常发生位置的最简单方法是在gdb中的-[NSException提高]和objc_exception_throw上设置断点.这样一来,您将立即中断,然后可以检查堆栈.

The easiest way to find where your exception is happening is to set breakpoints on -[NSException raise] and objc_exception_throw in gdb. Then you'll break as soon as it happens, and you can examine the stack at that point.

这篇关于在Objective C代码中查找异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆