标签: exc-bad-access

XCode 4在EXC_BAD_ACCESS上没有突破正确的线路

我最近将我的xcode升级到版本4,并且我的EXC_BAD_ACCESS exception代码中有一个,但是尽管NSZombieEnabled在环境中设置它仍然显示在thread1,int retVal = UIApplicationMain(argc, argv, nil, nil);line 上的断点.

我确定我在XCode 3中配置了这个,以阻止导致异常的代码行.现在它没有这样做,也没有在GDB窗口中显示错误消息.

有谁知道我可能会缺少什么?

谢谢雷

xcode exc-bad-access

8
推荐指数
1
解决办法
3861
查看次数

iPhone上的应用程序加载时ImageLoaderMachO崩溃

当应用程序从此EXC_BAD_ACCESS行(asm)上的调试器()加载时,我遇到了崩溃:

__dyld__ZN16ImageLoaderMachO12bindLocationERKN11ImageLoader11LinkContextEmmPKS0_hPKclS7_+320>
Run Code Online (Sandbox Code Playgroud)

我知道它有图像加载器的东西,但我无法弄清楚是什么.

任何的想法?

谢谢.

iphone crash exc-bad-access ios

8
推荐指数
1
解决办法
1309
查看次数

UIAlertview代码上的EXC_BAD_ACCESS = 1

我在[alert show]行上获得了EXC_BAD_ACCESS.

为什么我得到这个?

 alert = [[UIAlertView alloc]initWithTitle:@"Application Alert" message:@"all date popup" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Update",nil];

 [alert show]; //EXC_BAD_ACCESS on this line
Run Code Online (Sandbox Code Playgroud)

iphone xcode exc-bad-access objective-c uialertview

8
推荐指数
2
解决办法
2997
查看次数

va_list在64位模拟器上崩溃

使用64位iOS模拟器时,下面的init函数崩溃,出现EXC_BAD_ACCESS(code = 1)错误.谁会知道为什么?以及如何正确地解决它.

有关信息:'format'不是零,它可以在32位模拟器和任何32/64位iPhone/iPad设备上正常工作.

void Log (NSString * format, ...)
{
   va_list argList;
   va_start(argList, format);
   NSLogv(format, argList);
   NSString* string = [[NSString alloc] initWithFormat: format arguments: argList];
   va_end(argList);

...
}
Run Code Online (Sandbox Code Playgroud)

在AppDelegate中称为第一件事

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   Log(@"app options %@", launchOptions);
   ...
}
Run Code Online (Sandbox Code Playgroud)

64-bit exc-bad-access nsstring ios ios-simulator

8
推荐指数
1
解决办法
2067
查看次数

Swift中的parser.parse()导致EXC_BAD_ACCESS

我正在关注本教程,作为我正在Swift工作的RSS馈送器应用程序的快速入门.我知道自从本教程以来Swift中有一些变化,但它们似乎都没有解释为什么我遇到这个问题.

相关代码(据我所知)在我的TableViewController中如下:

 override func viewDidLoad() {
    super.viewDidLoad()

    let url:NSURL = NSURL(string: "my.url.string")
    parser = NSXMLParser(contentsOfURL: url)
    parser.delegate = self
    parser.parse() // <- Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

}
Run Code Online (Sandbox Code Playgroud)

实际的解析器委托方法似乎没有问题,因为我在它们上放置了断点,甚至在崩溃之前都没有调用它们.

我的假设是它是一个Swift错误,但我想在我向苹果抱怨之前确保我没有遗漏一些东西.

exc-bad-access nsxmlparser ios swift xcode6

8
推荐指数
1
解决办法
2051
查看次数

在使用它来评估NSExpression后更新Swift字典时的EXC_BAD_ACCESS

我使用字典来计算表达式,当表达式变量和字典实际上是由NSExpression使用,有事和我在尝试更新字典时EXC_BAD_ACCESS,在iPhone6调试时,而不是在这只是发生模拟器而不是iPhone 4S.

    let strExpression = "a+b+20"
    let exp = NSExpression(format:strExpression)
    self.dictionary = ["a":10.0, "b":15.0, "c":25.0]
    let value:AnyObject = exp.expressionValueWithObject(self.dictionary, context: nil)
    let doubleValue = value as Double
    self.dictionary.updateValue(doubleValue, forKey: "c")    
Run Code Online (Sandbox Code Playgroud)

真的很奇怪的是,如果我在创建字典后添加这一行,那么它很好:

let newDic = self.dictionary    
Run Code Online (Sandbox Code Playgroud)

我,我使用的是iOS 8.1.提前致谢!

dictionary exc-bad-access ios swift

8
推荐指数
1
解决办法
1984
查看次数

iOS CoreLocation(null)崩溃

我通过Crashlytics在我的应用程序中收到此错误.我无法找到崩溃发生的地点和方式.以下是Crashlytics的日志:

Thread : Crashed: com.apple.main-thread
0  CoreLocation                   0x0000000183f62304 (null) + 60044
1  CoreLocation                   0x0000000183f230f0 (null) + 1436
2  CoreLocation                   0x0000000183f230f0 (null) + 1436
3  CoreLocation                   0x0000000183f2261c (null) + 1980
4  CoreFoundation                 0x0000000183754c9c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
5  CoreFoundation                 0x0000000183754940 __CFRunLoopDoTimer + 884
6  CoreFoundation                 0x0000000183752054 __CFRunLoopRun + 1520
7  CoreFoundation                 0x0000000183680dc0 CFRunLoopRunSpecific + 384
Run Code Online (Sandbox Code Playgroud)

并且还说明了:崩溃:com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x6136383561626000

有人能指出我正确的方向吗?谢谢

exc-bad-access core-location ios

8
推荐指数
1
解决办法
570
查看次数

使用sortUsingComparator的EXC_BAD_ACCESS

我理解错误的EXC_BAD_ACCESS含义一般,但我对我的情况发生了什么感到困惑.

我有一个具有NSComparator属性的自定义类sortWithThisComparator.如果该属性由用户设置,当我将项插入实例的类属性数组时,items我使用比较器来确定插入位置:

- (void) insertItem:(id<NSCoding, CKArchivingItem>) item {
    if (arrayObjectClassString && ![item isKindOfClass:NSClassFromString(arrayObjectClassString)]) {
        [NSException raise:@"YOU MADE A MISTAKE" format:@"you tried to insert a %@ but I can only accept %@", [item class], arrayObjectClassString];
    } else {
        if (!sortWithThisComparator) {
            [self.items addObject:item];
        } else {
            NSInteger newItemIndex = [self.items indexOfObject:item inSortedRange:NSMakeRange(0, [self.items count]) options:NSBinarySearchingFirstEqual usingComparator:sortWithThisComparator];
            if (newItemIndex >= [self.items count]) {
                [self.items addObject:items];
            } else {
                [self.items insertObject:item atIndex:newItemIndex];
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

sorting exc-bad-access objective-c nsarray

8
推荐指数
1
解决办法
293
查看次数

在iOS8.1上创建CIContext但不是9或10时的EXC_BAD_ACCESS

我在线上获得了exc_bad_access CIContext *context = [CIContext contextWithOptions:nil];

我已经启用了僵尸并用乐器检查:没有运气.

完整的代码是:

- (UIImage *) doBinarize:(UIImage *)sourceImage withThreshold:(float)threshold {
    UIImage *newImage; 
    if (sourceImage){

        CIContext *context = [CIContext contextWithOptions:nil];
        CIImage *image = [[CIImage alloc] initWithImage:sourceImage];
        CIImage *cImg = [self AdaptiveThresholdFilter:image withThreshold:threshold];
        CIImage *ciImage = cImg;
        CGImageRef cgImage   = [context createCGImage:ciImage fromRect:CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height)];
        newImage = [UIImage imageWithCGImage:cgImage];
        CGImageRelease(cgImage);
    } else {
        return nil;
    }

    return newImage;
}
Run Code Online (Sandbox Code Playgroud)

但是我发现几乎在我放置CIContext contextWithOptions行的任何地方,应用程序都会崩溃.

这是在iOS8.1,iPhone 5C上.应该注意的是iOS9或iOS10没有问题.

有什么建议?

exc-bad-access core-image ios ios8

8
推荐指数
0
解决办法
260
查看次数

堆栈溢出:线程 1:EXC_BAD_ACCESS(代码=2,地址=0x16d09aa00)

崩溃描述

最近,我在我的一个 iOS/Swift 项目中遇到了非常奇怪的内存问题。我真的不确定发生了什么,感觉也不太容易描述,但无论如何我会尽力而为。

它的基本行为如下:

  • 在某个代码库上,崩溃总是发生在同一个地方(100% 可重现)
  • 更改代码库,可能会解决问题,但也可能只是在其他地方弹出
  • 崩溃只发生在真实设备上,永远不会发生在模拟器内

目前该应用程序崩溃并出现以下错误(3 次不同运行的结果):

线程 1:EXC_BAD_ACCESS(代码=2,地址=0x16d09aa00)

线程 1:EXC_BAD_ACCESS(代码=2,地址=0x16af46a00)

线程 1:EXC_BAD_ACCESS(代码=2,地址=0x16d526a00)


关于内存地址的推理

世界开发者大会

我在WWDC 2018 上发现了一个有趣的会议(Understanding Crashes and Crash Logs),其中一个人指出有时可以从特定的内存地址中获取更多信息,崩溃就会发生。

不幸的是,它在我的应用程序中崩溃的地址有些完全不同,但也许我们可以从它们那里获得线索?至少有趣的是,它们都非常相似,不是吗?

由于启用了诊断选项而发生的变化

进一步调查表明,前 2 个字节 (16) 始终保持不变,然后是 4 个随机字节,然后是 3 个字节 (a00)。当激活诊断(例如 ASan 或 Scribble)时,最后 3 个字节会改变(例如 3a0 或 9e0)。但也许这只是由于添加了更多“调试内容”而导致的一种转变?我真的不是那个“记忆人”,只是想提供我注意到的任何东西。


尝试“诊断选项”

我尝试了不同的诊断选项(来自方案),但没有一个真正以任何方式改变崩溃,或提供更多信息。

1. 涂鸦

崩溃不引用 0xAA 或 0x55,所以使用 Scribble 没有什么可以捕获的吗?(Xcode - 涂鸦,保护边缘和保护 malloc

2. Malloc Guard Edges

使用这个也没有注意到任何区别。

3. 僵尸

使用本指南

malloc_info --type 0x16b15e9c0

错误:错误:试图将堆栈放入无法读取的内存中:0x16b15e920。

4.阿桑

使用 ASan …

xcode exc-bad-access ios swift reswift

8
推荐指数
1
解决办法
4441
查看次数