【问题标题】:Xcode 4 doesn't show "EXC_BAD_ACCESS" in debug area. Why not?Xcode 4 在调试区域不显示“EXC_BAD_ACCESS”。为什么不?
【发布时间】:2011-08-17 12:30:32
【问题描述】:

我故意制造“EXC_BAD_ACCESS”故障。 应用程序当然会崩溃,但调试器不知何故缺少“EXC_BAD_ACCESS”消息。 这是为什么呢?

这是我正在使用的代码:

NSString *str = [[NSString alloc] initWithFormat:@"Foo"];
NSArray *a = [[NSArray alloc ]initWithObjects:str, nil];
[str release];
[a release];
NSLog(@"%@",str);

这是调试器日志:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 41313.
sharedlibrary apply-load-rules all
(gdb) 

【问题讨论】:

  • 您使用的开发者或发行版的配置文件是什么?
  • 仅仅释放一个对象并不会改变这个对象,它的内存会存在一段未指定的时间。因此,可能不会立即发生引用内存的崩溃。
  • 崩溃时有发生。没有任何消息是问题

标签: iphone objective-c ios ios4 xcode4


【解决方案1】:

为了重复我向同事提出类似问题时告诉我的内容,我被告知这是 Apple 相当于“对象实例未设置为对象实例”。调试器有时会显示(可能)导致它的转储,而其他时候则完全忽略它。我敢肯定其中的原因是押韵的,但它很可能隐藏在 Apple 大厅深处的文件中的某个地方。到目前为止,我从未发现任何带有 EXC_BAD_ACCESS 转储的模式(或缺少这种模式)。我刚刚学会忽略丢失的信息并开始寻找指针问题!

虽然没有太大帮助,但我想我还是会分享这个!

【讨论】:

  • 嗯,我想这是一个开始。你所说的“寻找指针问题”是什么意思?
  • 哦,我倾向于在错误的位置释放指针等等。这是我检查的第一件事。
【解决方案2】:

可能是 NSLog 的问题...尝试另一种方法来创建段错误。例如:

char * str;

str      = ( char * )666;
str[ 0 ] = 0;

【讨论】:

  • 我想为一个 NSObject 成员创建一个段错误,这样我以后就可以使用 NSZombie...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2012-06-18
相关资源
最近更新 更多