【问题标题】:Create EXC_BAD_ACCESS on purpose故意创建 EXC_BAD_ACCESS
【发布时间】:2014-03-18 18:46:18
【问题描述】:

我想和EXC_BAD_ACCESS一起玩,学习调试它,发现创建这样的情况相当困难。

我想看看Scheme中“Enabeling Zombie Objects”的使用

当你需要的时候它在哪里?

甚至这项工作都没有 - 将构建设置设置为不使用 ARC:

myobj *m = [[myobj alloc] init];
[m release];
[m dealloc];

 m = nil;
[m hello];

一些非常好的建议,例如:

int * array = (void *)0xDEADBEEF;
    array[2] = 10;

它只会让 Xcode 停止在线上说坏访问,我需要更糟糕的 :-)

我见过它在 main.m 中最难调试的情况。你能创造一个吗?

【问题讨论】:

标签: objective-c debugging exception crash exc-bad-access


【解决方案1】:

试试这个

- (void) badAccess
{
    void (*nullFunction)() = NULL;
    nullFunction();
}

【讨论】:

    【解决方案2】:

    EXC_BAD_ACCESS 表示您正在尝试访问不允许访问的内存。在这种情况下,几乎任何指向任意地址的指针设置都会双快引发此异常:

    NSString * s = (__bridge id)(void *)0x8BADF00D;
    [s uppercaseString];
    

    或者

    int * array = (void *)0xDEADBEEF;
    array[2] = 10; 
    

    我不确定这对练习有多大帮助;我认为发生的事情太明显了,但如果你愿意,你就是这样做的。

    【讨论】:

      【解决方案3】:

      我认为你可以使用strcmp(0, "");

      【讨论】:

        猜你喜欢
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 2014-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        相关资源
        最近更新 更多