我在iOS 5模拟器/设备中调试Xcode 4.2时遇到问题.正如预期的那样,以下代码崩溃:
NSArray *arr=[NSArray array];
[arr objectAtIndex:100];
Run Code Online (Sandbox Code Playgroud)
在iOS 4中,我获得了十六进制数的有用堆栈跟踪.但是在iOS 5中,它只是给了我:
*** First throw call stack:
(0x16b4052 0x1845d0a 0x16a0674 0x294c 0x6f89d6 0x6f98a6 0x708743 0x7091f8 0x7fcaa9 0x2257fa9 0x16881c5 0x15ed022 0x15eb90a 0x15eadb4 0x15eaccb 0x6f02a7 0x6faa93 0x2889 0x2805)
Run Code Online (Sandbox Code Playgroud)
谢谢.
这是从这个布拉德·拉尔森的答案 SO问题
如果添加两个断点,则应该能够调试这些异常.为此,请转到"运行"| 显示| 断点并创建两个全局断点(我在全局中断点,因为它们在我的所有应用程序中都非常有用).第一个应命名为"objc_exception_throw",其位置应为"libobjc.A.dylib".第二个应该是" - [NSException raise]",它的位置应该是"CoreFoundation".
现在,如果您在启用断点的情况下开始调试应用程序,它应该在抛出这些异常时中断.然后,您应该能够在调试器中看到导致异常的事件链.
现在在这个答案中我想问我如何添加位置提到???
提前感谢您提供有关我所遇到的问题的任何帮助/见解.就在最近,我的iOS应用程序因可怕的EXC_BAD_ACCESS错误而开始失败.我对SO和Google进行了大量研究,并收到了一些很好的建议,但这些帖子都没有帮助我解决我的问题.到目前为止,我知道EXC_BAD_ACCESS可能是两件事之一:
1) A pointer is now pointing to memory that was deallocated.
2) A pointer itself is corrupt.
Run Code Online (Sandbox Code Playgroud)
我阅读并按照这里,这里,这里和这里的说明进行操作.当我执行"构建并运行"时,我可以100%重现exc_bad_access.但是,当我在调试器或工具中启用NSZombie时,我永远无法重现该问题.此外,NSZombie不会在控制台中留下任何有用的信息.
我最接近确定问题的方法是在每一行代码之后放置一个NSLog,以便查看崩溃的位置.我相信它在两个截然不同的地方崩溃 - 这两个点都在返回一个单元格cellForRowAtIndexPath.下面我提供了两种方法,我认为事情正在崩溃,以及我的控制台上的错误输出.任何帮助或指导将不胜感激,谢谢!
违规方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
static NSString *CellIdentifier = @"EventDetailCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.textLabel.textColor = [UIColor colorWithRed:150 green:143 blue:135 alpha:1.0];
cell.textLabel.highlightedTextColor = [UIColor …Run Code Online (Sandbox Code Playgroud) 我目前在控制台中收到此崩溃日志:
2011-08-23 19:18:40.064 App[1697:707] -[__NSCFData _isResizable]: unrecognized selector sent to instance 0x11f1c0
2011-08-23 19:18:40.075 App[1697:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData _isResizable]: unrecognized selector sent to instance 0x11f1c0'
Run Code Online (Sandbox Code Playgroud)
有谁知道这意味着什么?可能是什么原因造成的?
谢谢!
在Visual Basic中,可以使用一行代码来处理代码中的错误
"On Error Resume Next"
Run Code Online (Sandbox Code Playgroud)
Objective-C中有类似的东西吗?我的问题是我有一个"添加新单元格"添加按钮,在运行时创建一个新单元格.但是,细胞是可以重新订购的.当您尝试重新排序"添加新单元格"单元格时,我得到索引超出范围错误.如果我可以修复发生错误的错误,但是如果有错误处理程序我可以用来在出现错误时退出移动函数,那也很酷.
这是我的moveRowAtIndexPath代码:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
iProfileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate moveFromOriginal:fromIndexPath.row toNew:toIndexPath.row];
}
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (7) beyond bounds (7)'
Run Code Online (Sandbox Code Playgroud) ios ×3
xcode ×3
crash ×2
debugging ×2
iphone ×2
objective-c ×2
console ×1
memory-leaks ×1
uitableview ×1