- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 iPhone 应用程序。我有一个EXC_BAD_ACCESS
仅发生在发布目标中;当我构建调试目标时,不会发生异常。但是,当我设置NSZombieEnabled
时环境变量为YES
,我仍然得到 EXC_BAD_ACCESS
没有进一步的信息。 NSZombieEnabled
有可能吗?在执行发布目标时工作?我不明白为什么不,因为 gdb 在这两种情况下都在运行......
更新:这是堆栈顶部的打印输出:
#0 0x33369ebc in objc_msgSend ()
#1 0x3144f968 in -[EAInputStream _streamEventTrigger] ()
#2 0x3144fe78 in __streamEventTrigger ()
#3 0x338ae3a6 in CFRunLoopRunSpecific ()
#4 0x338adc1e in CFRunLoopRunInMode ()
#5 0x32ed6966 in -[NSRunLoop(NSRunLoop) runMode:beforeDate:] ()
#6 0x00005b06 in -[IOStreamDelegate removeMsg:] (self=0x142cc0, _cmd=<value temporarily unavailable, due to optimizations>, message=0x2fffe544) at /Users/robertmoretti/Documents/XXXXXXX/IOStreamDelegate.m:191
这是顶部 objc_msgSend 调用内部的 gdb session :
(gdb) p/x $r0
$6 = 0x3100000
(gdb) x/s $r1
0x32d7cff8: "release"
(gdb) disassemble $pc
Dump of assembler code for function objc_msgSend:
0x33369ea8 <objc_msgSend+0>: teq r0, #0 ; 0x0
0x33369eac <objc_msgSend+4>: moveq r1, #0 ; 0x0
0x33369eb0 <objc_msgSend+8>: bxeq lr
0x33369eb4 <objc_msgSend+12>: push {r3, r4, r5, r6}
0x33369eb8 <objc_msgSend+16>: ldr r4, [r0]
0x33369ebc <objc_msgSend+20>: ldr r5, [r4, #8]
0x33369ec0 <objc_msgSend+24>: ldr r6, [r5]
0x33369ec4 <objc_msgSend+28>: add r3, r5, #8 ; 0x8
0x33369ec8 <objc_msgSend+32>: and r5, r6, r1, lsr #2
0x33369ecc <objc_msgSend+36>: ldr r4, [r3, r5, lsl #2]
0x33369ed0 <objc_msgSend+40>: teq r4, #0 ; 0x0
0x33369ed4 <objc_msgSend+44>: add r5, r5, #1 ; 0x1
0x33369ed8 <objc_msgSend+48>: beq 0x33369efc <objc_msgSend+84>
0x33369edc <objc_msgSend+52>: ldr r12, [r4]
0x33369ee0 <objc_msgSend+56>: teq r1, r12
0x33369ee4 <objc_msgSend+60>: and r5, r5, r6
0x33369ee8 <objc_msgSend+64>: bne 0x33369ecc <objc_msgSend+36>
0x33369eec <objc_msgSend+68>: ldr r12, [r4, #8]
0x33369ef0 <objc_msgSend+72>: teq r4, r4
0x33369ef4 <objc_msgSend+76>: pop {r3, r4, r5, r6}
0x33369ef8 <objc_msgSend+80>: bx r12
0x33369efc <objc_msgSend+84>: pop {r3, r4, r5, r6}
0x33369f00 <objc_msgSend+88>: b 0x33369f04 <objc_msgSend_uncached>
End of assembler dump.
(gdb) p/x *$r0
$9 = 0x0
异常发生在 0x33369ebc <objc_msgSend+20>: ldr r5, [r4, #8]
行上。 r4
刚刚被赋予 r0
指向的值,恰好是 0。我想知道 0x3100000
的内存区域中应该有什么。 。这是该区域的内存转储:
(gdb) x/256w 0x3100000
0x3100000: 0x00000000 0x0000a293 0xaa650505 0x00000000
0x3100010: 0x0000a294 0xaa670505 0x00000000 0x0000a295
0x3100020: 0xaa690505 0x00000000 0x0000a296 0xaa6b0505
0x3100030: 0x00000000 0x0000a297 0xaa6d0505 0x00000000
0x3100040: 0x0000a298 0xaa6f0505 0x00000000 0x0000a299
0x3100050: 0xaa710505 0x00000000 0x0000a29a 0xaa730505
0x3100060: 0x00000000 0x0000a29b 0xaa750505 0x00000000
0x3100070: 0x0000a29c 0xaa770505 0x00000000 0x0000a29d
0x3100080: 0xaa790505 0x00000000 0x0000a29e 0xaa7b0505
0x3100090: 0x00000000 0x0000a29f 0xaa7d0505 0x00000000
0x31000a0: 0x0000a2a0 0xaa7f0505 0x00000000 0x0000a2a1
0x31000b0: 0xaa810505 0x00000000 0x0000a2a2 0xaa830505
0x31000c0: 0x00000000 0x0000a2a3 0xaa850505 0x00000000
0x31000d0: 0x0000a2a4 0xaa870505 0x00000000 0x0000a2a5
0x31000e0: 0xaa890505 0x00000000 0x0000a2a6 0xaa8b0505
0x31000f0: 0x00000000 0x0000a2a7 0xaa8d0505 0x00000000
0x3100100: 0x0000a2a8 0xaa8f0505 0x00000000 0x0000a2a9
0x3100110: 0xaa910505 0x00000000 0x0000a2aa 0xaa930505
0x3100120: 0x00000000 0x0000a2ab 0xaa950505 0x00000000
0x3100130: 0x0000a2ac 0xaa970505 0x00000000 0x0000a2ad
0x3100140: 0xaa990505 0x00000000 0x0000a2ae 0xaa9b0505
0x3100150: 0x00000000 0x0000a2af 0xaa9d0505 0x00000000
0x3100160: 0x0000a2b0 0xaa9f0505 0x00000000 0x0000a2b1
0x3100170: 0xaaa10505 0x00000000 0x0000a2b2 0xaaa30505
0x3100180: 0x00000000 0x0000a2b3 0xaaa50505 0x00000000
0x3100190: 0x0000a2b4 0xaaa70505 0x00000000 0x0000a2b5
0x31001a0: 0xaaa90505 0x00000000 0x0000a2b6 0xaaab0505
0x31001b0: 0x00000000 0x0000a2b7 0xaaad0505 0x00000000
0x31001c0: 0x0000a2b8 0xaaaf0505 0x00000000 0x0000a2b9
0x31001d0: 0xaab10505 0x00000000 0x0000a2ba 0xaab30505
0x31001e0: 0x00000000 0x0000a2bb 0xaab50505 0x00000000
0x31001f0: 0x0000a2bc 0xaab70505 0x00000000 0x0000a2bd
0x3100200: 0xaab90505 0x00000000 0x0000a2be 0xaabb0505
0x3100210: 0x00000000 0x0000a2bf 0xaabd0505 0x00000000
0x3100220: 0x0000a2c0 0xaabf0505 0x00000000 0x0000a2c1
0x3100230: 0xaac10505 0x00000000 0x0000a2c2 0xaac30505
0x3100240: 0x00000000 0x0000a2c3 0xaac50505 0x00000000
0x3100250: 0x0000a2c4 0xaac70505 0x00000000 0x0000a2c5
0x3100260: 0xaac90505 0x00000000 0x0000a2c6 0xaacb0505
0x3100270: 0x00000000 0x0000a2c7 0xaacd0505 0x00000000
0x3100280: 0x0000a2c8 0xaacf0505 0x00000000 0x0000a2c9
0x3100290: 0xaad10505 0x00000000 0x0000a2ca 0xaad30505
0x31002a0: 0x00000000 0x0000a2cb 0xaad50505 0x00000000
0x31002b0: 0x0000a2cc 0xaad70505 0x00000000 0x0000a2cd
0x31002c0: 0xaad90505 0x00000000 0x0000a2ce 0xaadb0505
0x31002d0: 0x00000000 0x0000a2cf 0xaadd0505 0x00000000
0x31002e0: 0x0000a2d0 0xaadf0505 0x00000000 0x0000a2d1
0x31002f0: 0xaae10505 0x00000000 0x0000a2d2 0xaae30505
0x3100300: 0x00000000 0x0000a2d3 0xaae50505 0x00000000
0x3100310: 0x0000a2d4 0xaae70505 0x00000000 0x0000a2d5
0x3100320: 0xaae90505 0x00000000 0x0000a2d6 0xaaeb0505
0x3100330: 0x00000000 0x0000a2d7 0xaaed0505 0x00000000
0x3100340: 0x0000a2d8 0xaaef0505 0x00000000 0x0000a2d9
0x3100350: 0xaaf10505 0x00000000 0x0000a2da 0xaaf30505
0x3100360: 0x00000000 0x0000a2db 0xaaf50505 0x00000000
0x3100370: 0x0000a2dc 0xaaf70505 0x00000000 0x0000a2dd
0x3100380: 0xaaf90505 0x00000000 0x0000a2de 0xaafb0505
0x3100390: 0x00000000 0x0000a2df 0xaafd0505 0x00000000
0x31003a0: 0x0000a2e0 0xab050505 0x00000000 0x0000a2e1
0x31003b0: 0xab070505 0x00000000 0x0000a2e2 0xab090505
0x31003c0: 0x00000000 0x0000a2e3 0xab0b0505 0x00000000
0x31003d0: 0x0000a2e4 0xab0d0505 0x00000000 0x0000a2e5
0x31003e0: 0xab0f0505 0x00000000 0x0000a2e6 0xab110505
0x31003f0: 0x00000000 0x0000a2e7 0xab130505 0x00000000
我真的不知道还能尝试什么;希望有更多 iPhone 使用经验的人能够认识到这段内存是有意义的。
更新 2: 我刚刚发现该问题仅在使用 -O2、-O3 和 -Os 进行编译时出现。不确定这意味着什么。
最佳答案
在objc_msgSend
中,r0
包含一个指向消息接收者的指针。当您的应用程序尝试加载接收器指向的内容时,它会崩溃。最可能的解释是,您正在向尚未初始化的对象或已释放的对象发送消息,但还有其他可能性。
您可能还想看看“So you crashed in objc_msgSend ”;它是关于 Intel OS X 平台的文章,但其中大部分内容也适用于 iPhone 操作系统。
关于iphone - 如何调试仅在 iPhone 应用程序的发布目标上发生的 EXC_BAD_ACCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519481/
我遇到了一些应用程序崩溃的问题,我需要一些指导才能修复它。我有一个带有主视图和模态视图的应用程序,非常类似于默认的翻转实用模板。当我第一次运行该应用程序时,一切都运行良好,包括模态视图。但是,当我返回
UPDATE: I updated the correction of my definition of Realm, I still get the error. I'm using Swi
我正在尝试用带有c的sqlite3创建一个CGI可执行文件。但我收到错误exc_badd_access,我不知道问题出在哪里。我的代码是:。main.c。sqlite.h。Sqlite.c。Confi
我正在尝试用带有c的sqlite3创建一个CGI可执行文件。但我收到错误exc_badd_access,我不知道问题出在哪里。我的代码是:。Main.c。sqlite.h。Sqlite.c。Confi
我正在尝试暂停 AVAudioPlayer如果当前正在播放。当我调试我的代码并检查时 AVAudioPlayer ,我看是分配的。当我尝试访问它的方法/属性(即 myAudioPlayer isPla
我正在使用 xcode 用 C 语言编写这个简单的程序。 #include int main() { double A[200][200][2][1][2][2]; int B[2
这是我得到的错误 Thread 1:EXC_BAD_ACCESS (code=2, address=0xb7ffffc) 在这条线上 [[NSNotificationCenter defaultCen
我的 iPhone 应用程序出现问题,出现 EXC_BAD_ACCESS,出现一些内存泄漏,但这些问题现已修复,所以我不确定发生了什么。我意识到我没有提供很多信息,但我真的不知道发生了什么。 打开初始
//adds a button to scroll list -(void) addNode:(NSString *) atitle{ UIButton *btn = [UIButton
我几乎完成了我的第一个应用程序,但我遇到了一个奇怪的 EXC_BAD_ACCESS,这种情况几乎一直在发生。 这是跟踪: #0 0x02adba93 in objc_msgSend #1 0x0702
我一直在研究核心数据,并开始编写一些方法来查询不同日期范围的数据。我的核心数据模型非常简单(名为 Smoke 的实体,具有一个字段 - 时间戳(日期类型)。 当我执行代码时,会返回正确的计数,但出现自
我有以下代码: ABAddressBookRef ab; ab = ABAddressBookCreate(); int len = (int) ABAddressBookGetPersonCount
希望有人可以帮助我调试这个问题,因为 EXC_BAD_ACCESS 是我收到的唯一错误。我也尝试过打开 NSZombieEnabled,但据我所知,没有获得更多信息。 问题。我有四个实体: A ->
我正在 tableView 上加载自定义单元格,并在 tableView 中返回 50 行。一些行数显示在表格 View 中,但是当滚动表格 View 时,我的自定义单元格不显示,并且出现错误 "EX
我正在尝试使用 NSLog 来打印控制台消息。问题是有时我在调用它时收到“EXC_BAD_ACCESS”错误 -(void)willRotateToInterfaceOrientation:(UIIn
这是我使用音频队列生成噪音的代码: http://pastebin.com/Kn8GU72J 问题是我的代码生成了 EXC_BAD_ACCESS。问题似乎出在作业中 MAAudioManage
我正在开发适用于 iOS 的 OpenGL ES 2 应用程序。今天早上(没有更改任何代码)我开始从 sgxTextureGetImageRowBytes 抛出 EXC_BAD_ACCESS。 #0
我在这里完全迷路了。 我的应用程序中有Google Analytics(分析),可查看有多少用户从UITableView进入detailview 我在viewDidLoad方法中添加了Google A
我是 Cocoa 新手,正在编写一个简单的应用程序来学习使用 Core Data,但它因 EXC_BAD_ACCESS 而崩溃。尝试了几种方法,但尚未找到解决方案。正如我所说,我对 Cocoa 的经验
以下代码使应用程序崩溃,我不知道为什么。它不规则地崩溃,这意味着有时单击一行时 ImageView 可以显示 30 次,有时当我选择一行时它会第二次崩溃。 仅供引用:事件指示器、操作表和变量 imag
我是一名优秀的程序员,十分优秀!