可可应用程序中的objc_msgSend和EXC_BAD_ACCESS

如何解决可可应用程序中的objc_msgSend和EXC_BAD_ACCESS

| 一般来说,如何避免Mac App中的objc_msgSend()崩溃?另外,我们如何避免EXC_BAD_ACCESS崩溃?我们为什么得到它?我们如何处理这类错误?他们正在增加我们的应用程序,并希望在此问题上寻求指导和帮助。 我们正在使用XCode 3.2.5,我们的项目是使用Objective-C语言的可可项目。我们的网络服务是一个由IIS驱动的ASP.Net网站(我们可以在其中下载/上传XML文件和图像)。 我们正在Mac上开发可可应用程序,在启动该应用程序的十次尝试中,我们两次遇到了这种情况。该应用程序有一个素描应用程序,当我们运行该应用程序时,它只是在1分钟内冻结并崩溃,而没有执行任何操作。该应用程序执行的一些功能是: 从网上下载xml并在我们的应用程序上解释 登录到Web服务 有一个素描本 有一个计时器 拖放功能 上传xml数据 下载图像并在我们的应用程序上显示 崩溃不仅限于应用程序的发布后。有时,当在Mac应用程序上操作诸如拖放,下载数据集以及执行添加/编辑/删除功能之类的程序时,该应用程序也会崩溃。 坦白地说,我们在这个开发平台和环境中还比较陌生,我们仍在学习中。您可以指导我们解决这个问题吗?喜欢一些资源或提示我们做错了什么?非常感谢这里的每个人。 以下是崩溃报告的示例:
Process:         Sketch [63065]
Path:            /Users/william_hooley_27Inch/Desktop/untitled folder/MacGlass.app/Contents/MacOS/Sketch
Identifier:      com.apple.CocoaExamples.Sketch
Version:         1.049 (48.1)
Code Type:       X86 (Native)
Parent Process:  launchd [116]
Date/Time:       2011-04-14 13:12:15.421 +1000
OS Version:      Mac OS X 10.6.5 (10H574)
Report Version:  6
Interval Since Last Report:          714907 sec
Crashes Since Last Report:           17
Per-App Interval Since Last Report:  206437 sec

Per-App Crashes Since Last Report:   5
Anonymous UUID:                     
086C860F-E28E-4256-84F9-9692782AAD01
Exception Type:  EXC_BAD_ACCESS
(SIGBUS) Exception Codes:
KERN_PROTECTION_FAILURE at
0x0000000000000044 Crashed Thread:  0 
Dispatch queue: com.apple.main-thread
Thread 0 Crashed:  Dispatch queue:
com.apple.main-thread 0  
com.apple.AppKit             
0x91a8e6cb
_recursiveInvalidateCachedVisibleRectValue
+ 24 1   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
2   com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 3   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
4   com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 5   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
6   com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 7   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
8   com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 9   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
10  com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 11  com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
12  com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 13  com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
14  com.apple.AppKit             
0x91a8e70d
_recursiveInvalidateCachedVisibleRectValue
+ 90 15  com.apple.AppKit              0x91a8e2e1 -[NSView _setSuperview:] +
684 16  com.apple.AppKit             
0x91a8db02 -[NSView addSubview:] + 383
17  com.apple.CocoaExamples.Sketch
0x00094cbf -[viewTasksDisplay Appear:]
+ 242 18  com.apple.CocoaExamples.Sketch
0x000c2e8f -[MainWindow
ShowLeftScreen:] + 964 19 
com.apple.CocoaExamples.Sketch
0x0003e301 -[viewOptionMenuItemmouseDown:] + 2055 20 
com.apple.AppKit             
0x91bc6c68 -[NSWindow sendEvent:] +
5549 21  com.apple.AppKit             
0x91adf817 -[NSApplication sendEvent:]
+ 6431 22  com.apple.AppKit              0x91a732a7 -[NSApplication run] + 917
23  com.apple.AppKit             
0x91a6b2d9 NSApplicationMain + 574 24 
com.apple.CocoaExamples.Sketch
0x0001b33e main + 30 25 
com.apple.CocoaExamples.Sketch
0x00001eba start + 54 Thread 1: 
Dispatch queue:
com.apple.libdispatch-manager 0  
libSystem.B.dylib            
0x98002982 kevent + 10 1  
libSystem.B.dylib            
0x9800309c _dispatch_mgr_invoke + 215
2   libSystem.B.dylib            
0x98002559 _dispatch_queue_invoke +
163 3   libSystem.B.dylib            
0x980022fe _dispatch_worker_thread2 +
240 4   libSystem.B.dylib            
0x98001d81 _pthread_wqthread + 390 5  
libSystem.B.dylib            
0x98001bc6 start_wqthread + 30 Thread
2: 0   libSystem.B.dylib            
0x97fdc0fa mach_msg_trap + 10 1  
libSystem.B.dylib            
0x97fdc867 mach_msg + 68 2  
com.apple.CoreFoundation     
0x995f837f __CFRunLoopRun + 2079
另一个崩溃报告:
Date/Time:       2011-04-14 13:27:02
+1000 OS Version:      10.6.5 (Build 10H574) Architecture:    x86_64 Report
Version:  6 Command:         MacGlass
Path:           
/Users/william_hooley_27Inch/Desktop/untitled
folder/MacGlass.app/Contents/MacOS/Sketch
Version:         1.050 (48.1) Parent: 
launchd [116] PID:             63101
Event:           hang Duration:       
3.58s (sampling started after 2 seconds) Steps:           16 (100ms
sampling interval) Pageins:         0
Pageouts:        0 Process:        
Sketch [63101] Path:           
/Users/william_hooley_27Inch/Desktop/untitled
folder/MacGlass.app/Contents/MacOS/Sketch
UID:             501   Thread edef3d4 
DispatchQueue 100   User stack:
    16 start + 54 (in Sketch) [0x1f6a]
      16 main + 30 (in Sketch) [0x1b3ee]
        16 NSApplicationMain + 574 (in AppKit) [0x91a6b2d9]
          16 -[NSApplication run] + 821 (in AppKit) [0x91a73247]
            16 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
+ 156 (in AppKit) [0x91ab0fce]
              16 _DPSNextEvent + 847 (in AppKit) [0x91ab178d]
                16 BlockUntilNextEventMatchingListInMode
+ 81 (in HIToolbox) [0x95bd0bd6]
                  16 ReceiveNextEventCommon + 354 (in
HIToolbox) [0x95bd0d51]
                    16 RunCurrentEventLoopInMode + 392 (in
HIToolbox) [0x95bd0f9c]
                      16 CFRunLoopRunInMode + 97 (in
CoreFoundation) [0x995f7291]
                        16 CFRunLoopRunSpecific + 452 (in
CoreFoundation) [0x995f7464]
                          16 __CFRunLoopRun + 8059 (in CoreFoundation) [0x995f9adb]
                            16 __NSFireTimer + 141 (in Foundation) [0x972c39b0]
                              16 _handleWindowNeedsDisplay + 696 (in AppKit) [0x91adb28a]
                                16 -[NSWindow displayIfNeeded] + 204 (in AppKit) [0x91aa9d40]
                                  16 -[NSView displayIfNeeded] + 818 (in AppKit) [0x91ae0a57]
                                    16 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]
+ 4122 (in AppKit) [0x91b801cf]
                                      16 CAViewEndDraw + 134 (in QuartzCore)
[0x961bd926]
                                        16 pthread_cond_wait$UNIX2003 + 73 (in
libSystem.B.dylib) [0x9800b9f8]
                                          16 __semwait_signal + 10 (in
libSystem.B.dylib) [0x9800a0a6]  
Kernel stack:
    15 semaphore_wait_continue + 0 [0x22a3dd]
    1 lo_alltraps + 454 [0x2a08a6]
      1 i386_astintr + 47 [0x2a9a9a]
        1 ast_taken + 247 [0x219107]
          1 bsd_ast + 806 [0x489088]
            1 postsig + 432 [0x4861df]
              1 exit1 + 449 [0x47ab28]
                1 task_terminate_internal + 315
[0x22c56a]
    

解决方法

发生这种情况的常见原因是释放对象。如果使用NSZombieEnabled运行代码,则控制台输出应为您提供寻找位置的线索。 或者,如果这是针对10.5或更高版本的Macintosh应用程序,则可以启用垃圾收集,而完全不必担心保留和释放。     ,当在与调试器连接的设备上的iOS应用上发生此错误时,您可以通过在调试控制台上键入来找出正在调用的选择器   (gdb)x / s $ r1 当加速度计的委托仍设置为释放对象时,这帮助我发现了一个问题。也许此信息对其他人有帮助。     ,第二个崩溃报告不是崩溃,而是挂起报告。这意味着您的应用程序运行缓慢,没有崩溃。 通常,请阅读并完全理解Cocoa Memory Management指南;内存管理错误是导致Cocoa应用程序崩溃的主要原因。可以在以下位置找到该指南:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html 您还应该能够使用Xcode调试器之类的工具以及Instruments中的Zombies工具来收集有关崩溃的更多详细信息。     ,我可以使用lldb找到有问题的选择器,但是对我来说,方法与上面使用gdb语义和iOS早期版本的答案所描述的不同(我目前正在使用iOS 8) 我的堆栈跟踪是这样开始的:
libobjc.A.dylib`objc_msgSend:
0x10c160000:  testq  %rdi,%rdi
0x10c160003:  jle    0x10c160068        ; objc_msgSend + 104
0x10c160005:  movq   (%rdi),%r11
0x10c160008:  movq   %rsi,%r10
0x10c16000b:  andl   0x18(%r11),%r10d  <== EXC_BAD_ACCESS
在lldb提示符下,我执行了以下操作:
(lldb) register read -G s r10
     r10 = \"\\xffffffc16\\xffffffa4\\t\\x01\"  \"isKindOfClass:\"
    ,我只是在objc_msgSend中解决了EXC_BAD_ACCESS的问题,方法是查找覆盖字符串结尾的位置,从而破坏了存储中的对象。     ,对我来说,问题是我从不是UIAleraction的选择器中调用了UIAleraction处理程序     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-