objective-c - 线程 0 崩溃,X86 线程状态(32 位): in cocoa Application

标签 objective-c macos cocoa osx-leopard

我正在修复 OS X 应用程序的崩溃。崩溃报告显示

Date/Time: 2012-05-01 16:05:58.004 +0200
OS Version: Mac OS X 10.5.8 (9L31a)

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000545f5f00
Crashed Thread: 8

Thread 8 crashed with X86 Thread State (32-bit):

eax: 0x140e0850 ebx: 0x00060fc8 ecx: 0x92df0ec0 edx: 0xc0000003
edi: 0x545f5f00 esi: 0x140e0870 ebp: 0xb0445988 esp: 0xb0445964
ss: 0x0000001f efl: 0x00010206 eip: 0x92dca68c cs: 0x00000017
ds: 0x0000001f es: 0x0000001f fs: 0x0000001f gs: 0x00000037
cr2: 0x545f5f00

如何用这个报告去皮重应用程序代码?

什么是使用 X86 线程状态(32 位)崩溃的线程 0?

最佳答案

在这里查看 Apple 关于 CrashReporter 的技术说明:https://developer.apple.com/library/mac/#technotes/tn2004/tn2123.html

Thread 0 crashed with X86 Thread State (32-bit):
  eax: 0x00000000  ebx: 0x942cea07  ecx: 0xbfffed1c  edx: 0x94b3a8e6
  edi: 0x00000000  esi: 0x00000000  ebp: 0xbfffed58  esp: 0xbfffed1c
   ss: 0x0000001f  efl: 0x00010206  eip: 0x00000000   cs: 0x00000017
   ds: 0x0000001f   es: 0x0000001f   fs: 0x00000000   gs: 0x00000037
  cr2: 0x00000000

对于运行 32 位代码的基于 Intel 的计算机,您应该考虑以下几点:

关注两个值:eip 和异常地址(如前所述)。

eip 是异常发生时的程序计数器。也就是说,它是导致异常的指令的地址。对于大多数非内存访问异常(例如,由整数除以零引起的 EXC_ARITHMETIC/EXC_I386_DIV),这是关键值。

对于内存访问异常:

如果eip等于异常地址,异常是取指令引起的。通常这意味着:

你调用了一个伪造的函数指针(或者,等价地,调用了一个伪造对象的方法)

你已经返回到一个错误的地址,这反过来意味着你已经破坏了堆栈

如果 eip 不等于异常地址,则异常是由内存访问指令引起的(就 C 而言,这意味着您正在解除对无效指针的引用)。

关于objective-c - 线程 0 崩溃,X86 线程状态(32 位): in cocoa Application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096319/

相关文章:

objective-c - 使用添加符号作为 NSImage

cocoa - 如何让基于 NSDocument 的应用程序打开文件夹,但将关联的文档保存到应用程序支持?

ios - 是否可以在 iPhone 中使用 AVAudioPlayer 更改音频播放速度?

ios - ABPeoplePickerNavigationController shouldContinueAfterSelectingPerson 返回搜索结果

ios - 从后台打开应用程序时不调用 ViewDidAppear

objective-c - OS X NSDatePicker - 如何将日历设置为今天

objective-c - respondsToSelector 和 class_getInstanceMethod

javascript - 有没有办法通过浏览器Javascript检测Mac上触控板、魔术鼠标或魔术触控板的多点触控事件?

iphone - 核心数据实体的蓝牙传输

cocoa - Swift 1.2 不愿意我的 NSString "+"map.reduce