gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:02 24 4
gpt4 key购买 nike

我正在修复 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com