转载于 :http://baoyy198612.blog.163.com/blog/static/162139901201110802959612/
這時候編譯器就只會告訴你:BAD_ACCESS,然後程式就死了
剛開始會google到去Argument加個NSZombieEnabled YES
會多吐一點東西讓你把bug除掉
今天遇到加了這個後error message變:
[CALayer release]:message sent to deallocated instance 0x4dd650
layer這麼多怎麼知道哪裡出問題阿???
google了一下才找到解法:
1.在Argument裡面加入這三個參數:
NSZombieEnabled YES
MallocStackLogging YES
MallocStackLoggingNoCompact Yes
第一項可監控deallocated的記憶體,給更多的錯誤訊息
第二項可開啟MallocStack,就知道記憶體在程式運行中被配置的歷史
第三項可以更清楚顯示指定的MallocStack狀況(一開始沒加看到快脫窗還是看不懂)
2.跑程式(建議用模擬器),開console,這時候可以注意到一開始會出現類似下列訊息:
myproject(11779) malloc: stack logs being written into /tmp/stack-logs.11779.myproject.81hXWV
表示gdb開始有在紀錄
3.讓程式跑到出錯
如果有做步驟一,應該就會看到message sent to deallocated instance的錯誤訊息
複製後面跟的位址
4.在(gdb)後面下指令info malloc-history 0x4dd650(剛剛得到的位址)
如果gdb說找不到指令,可改用shell 11779 malloc_history(11779為程式的pid)
建議在模擬器跑的原因是因為程式跑在裝置的OS上,pid是裝置給予的,要存取好像會有點問題
今天在這卡關卡了一陣
5.如果上述步驟順利的話就會看到一串比較像程式碼的東西,應該也就看得出bug了
像這次遇到的bug就是因為某個UIButton沒有給定記憶體位置,dealloc函式裡又dealloc了一次
最後當在main
這種bug單看error message最好是de得出來啦!
分享到:
相关推荐
在iOS开发中,EXC_BAD_ACCESS错误是一种常见的运行...通过上述步骤,开发者可以有效地定位并解决iOS应用中的EXC_BAD_ACCESS错误。这种问题的解决对于提高应用的稳定性和性能至关重要,也是开发者必须熟练掌握的技术点。
为了有效地解决问题并提高应用的稳定性,开发者需要掌握一种有效的调试技巧——使用Xcode内置的Instrument工具来定位和修复`EXC_BAD_ACCESS`错误。 #### 二、Instrument工具简介 Instrument是Xcode集成开发环境中...
总结来说,解决SIGABRT和EXC_BAD_ACCESS错误需要理解iOS的内存管理机制,启用僵尸模式来定位问题,使用Instruments工具进行深入分析,并审查代码中的对象生命周期管理。对于storyboardDemo项目,通过模拟用户操作和...
iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里。 首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源...
CGImageIssueDemo 核心图形问题测试 做什么的 似乎对于iOS 11.2 +, CoreGraphics.framework发生了奇怪的... 这导致EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000 。 重现步骤 使用CGDataProviderCreateDi
出现EXC_BAD_ACCESS。 需要修改Product->Scheme->Edit Scheme->Options->GPU Frame Capture 选择 Disabled。 功能介绍 模仿Filckr的照相功能实现了: 1.实时滤镜 2.相机基本功能:拍照,对焦,前后...
Mach异常可以是EXC_BAD_ACCESS(内存访问异常)等。Mach异常是通过Mach API暴露给用户态的,可以直接通过Mach API设置thread、task、host的异常端口来捕获Mach异常,抓取Crash事件。 二、Unix Signal Unix Signal...
"ios-打印log和奔溃日志.zip"这个压缩包提供了一种方法来收集和分析应用的运行情况,以辅助开发者定位并修复问题。以下是关于iOS应用中日志打印、奔溃日志分析以及相关知识点的详细说明: 1. **日志打印**: - **...
这份文档是关于iOS面试问题的参考答案,内容主要涵盖了Objective-C语言、runtime、内存管理、并发编程、KVO、KVC以及调试技巧等方面的知识点。由于文档内容较多,以下是详细的知识点介绍: 1. _objc_msgForward函数...
2. **检查异常信息**:有时,崩溃日志会包含异常信息,如`EXC_BAD_ACCESS`或`SIGABRT`,这可以帮助确定问题类型。 3. **查看局部变量和状态**:如果日志包含崩溃时的变量值,可以分析这些值以确定问题所在。 4. **...
- **异常类型**:日志中会显示异常类型,如`EXC_BAD_ACCESS`、`SIGABRT`等,不同类型的异常对应不同的问题。 - **错误信息**:查看错误信息,如`NSException`的`reason`,有助于理解崩溃的具体情况。 - **堆栈...
在什么情况下应用会因EXC_BAD_ACCESS错误而崩溃? 推荐阅读: 自动版面 多任务-GCD,NSOperations等 设计模式-委派,单例,块等 积木 什么是区块?何时在您的应用中使用它们? 块如何使在块外部声明的变量发生...
- **iOS内存错误EXC_BAD_ACCESS**:这通常是由于对象已被释放但仍在使用导致的,检查代码中是否有内存管理问题,如未正确使用`strong`、`weak`、`autorelease`等关键字。 - **签名错误codesign failed with exit ...
2. **异常类型**:如SIGABRT、EXC_BAD_ACCESS等,表示发生错误的类型。 3. **堆栈跟踪**:这是最重要的一部分,它列出了崩溃发生前调用的函数序列,通过分析这个序列,开发者可以找到出错的具体位置。 4. **线程信息...
出现EXC_BAD_ACCESS。 需要修改Product->Scheme->Edit Scheme->Options->GPU Frame Capture 选择 Disabled。 功能介绍 模仿Filckr的照相功能实现了: 1.实时滤镜 2.相机基本功能:拍照,对焦,前后摄像头转换...
- **常见错误**:`BAD_ACCESS`通常是由于访问已释放的内存或者未初始化的内存引起的。 - **避免方法**:通过使用ARC、避免野指针、合理使用弱引用等方式来减少这类错误的发生。 ### 24. 特殊错误码 - **错误码**:`...
`reason`字段提供了关于异常的描述,而`name`字段则指明了异常的类型,例如`NSInvalidArgumentException`或`EXC_BAD_ACCESS`等。 除了手动捕获崩溃日志,iOS还提供了其他方式获取崩溃日志,如通过Xcode的设备和...
//EXC_BAD_ACCESS,非ARC正常 } returnnil; } 在几个项目种试了下,没发现啥问题,想用的尽管拿去用,另外非常欢迎参与完善,目前仅替换了几个类,还有很多需要替换的,请在github中关注,工具包以增量的形式,...
野指针是指向这些僵尸对象的指针,尝试通过野指针访问内存会引发`EXC_BAD_ACCESS`错误。相反,空指针(nil或NULL)没有指向任何对象,向空指针发送消息不会抛出错误,但在使用前需要确保它们指向有效的对象。 引用...