gpt4 book ai didi

ios 应用程序无错误地崩溃(即使通过单击按钮调用空操作)

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:08 25 4
gpt4 key购买 nike

我发现了类似的问题,但没有一个能解决我的问题。

有一些 View Controller 和工作应用程序。

我向其中一个 View Controller 添加了一个按钮并绑定(bind)了一个“sampleclick” Action 。此操作中没有任何内容(没有代码,没有行,只有一个空方法),应用程序崩溃并出现以下 block :

所有输出日志:

(lldb)

和堆栈:

libobjc.A.dylib`objc_msgSend:
0x10ed08c: movl 8(%esp), %ecx
0x10ed090: movl 4(%esp), %eax
0x10ed094: testl %eax, %eax
0x10ed096: je 0x10ed0e8 ; objc_msgSend + 92
0x10ed098: movl (%eax), %edx
0x10ed09a: pushl %edi
0x10ed09b: movl 8(%edx), %edi
0x10ed09e: pushl %esi
***0x10ed09f: movl (%edi), %esi >>> crashes here with :Thread1:EXC_BAD_ACCESS*** (code=1,address: .....)
0x10ed0a1: movl %ecx, %edx
0x10ed0a3: shrl $2, %edx
0x10ed0a6: andl %esi, %edx
0x10ed0a8: movl 8(%edi,%edx,4), %eax
0x10ed0ac: testl %eax, %eax
0x10ed0ae: je 0x10ed0b9 ; objc_msgSend + 45
0x10ed0b0: cmpl (%eax), %ecx
0x10ed0b2: je 0x10ed0d0 ; objc_msgSend + 68
0x10ed0b4: addl $1, %edx
0x10ed0b7: jmp 0x10ed0a6 ; objc_msgSend + 26
0x10ed0b9: popl %esi
0x10ed0ba: popl %edi
0x10ed0bb: movl 4(%esp), %edx
0x10ed0bf: movl (%edx), %eax
0x10ed0c1: jmp 0x10ed0d9 ; objc_msgSend + 77
0x10ed0c3: nopw %cs:(%eax,%eax)

最佳答案

对于您的问题,一个可能的答案是您正在尝试向对象的已释放实例发送消息。

尝试寻找 zoombies(按 R,选择诊断标签并激活启用僵尸对象)。每个已释放的对象都将成为 NSZombie 的一个实例,如果您尝试访问它们而不是崩溃,它会将消息记录到控制台。

此外,在 ARM 架构(与 iOS 相关)上,r0 应指向消息的接收方。您可以尝试对此进行调查。它可能会产生有用的信息。 (在调试器上使用 p/x $r0 命令。如果你执行 x/s $r1,你应该得到选择器名称。)

注意:
如果您要调试发生在objc_msgSend() 中的崩溃,我强烈建议您查看[objc explain]: So you crashed in objc_msgSend()。在仓鼠商场文件中。它包含有值(value)的提示和技巧,可从调试器中获取大部分信息以及调查崩溃发生的原因。

编辑:根据评论,但没有代码,只能猜测代码中某处是一个对象(可能是detailviewcontroller)已注册事件但过早释放。因此在发送 Action 时发生崩溃。这只是一个提示,但恕我直言,值得在调试器中进行调查。

关于ios 应用程序无错误地崩溃(即使通过单击按钮调用空操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124518/

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