方案1:NSZombieEnabled
先选中工程, 依次 "Product"-"Edit Scheme", 左栏选择"Run...", 右栏选中Arguments, 然后在Environment Variables下面添加以下三个属性, 设值为YES
NSDebugEnabled
NSZombieEnabled
NSAutoreleaseFreedObjectCheckEnabled
有时候在程序出错的时候能准确定位到奔溃的那一行, 或者会给你下面这样的提示,而不仅仅是EXEC_BAD_ACCESS:
message sent to deallocated instance 0x126550
如果要查看上面地址的分配情况
开启MallocStackLogging(Xcode4勾选下MallocStackLogging就行)
出错时shell malloc_history pid address
另:有时候可以重载respondsToSelector可以帮你找到程序崩溃时最后执行的函数,然后排查.
方案2:添加全局断点
Xcode4可以很方便的添加全局的异常断点
方案3:中断和未捕获异常
1.未拦截信号来源:内核,其他程序,本身.
常见的两个信号:
1).EXC_BAD_ACCESS 试图访问非法内存,导致SIGBUS或者SIGSEGV信号
2).未能拦截obj_exception_throw导致的SIGABRT信号.
2.方法
1).使用NSUncaughtionHandler安装一个handler拦截未拦截异常
2).使用signal函数安装一个handler拦截BSD信号.(SIGKILL[kill -9]和SIGSTOP[Control+z]无法拦截)
两个c函数
- void SignalHandler(int signal)
- {
-
- }
-
-
- void uncaughtExceptionHandler(NSException *exception)
- {
-
- }
安装(与全局异常断点冲突,当有这样的断点是,下面拦截函数失效)
- void InstallUncaughtExceptionHandler()
- {
- NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
- signal(SIGABRT, SignalHandler);
- signal(SIGILL, SignalHandler);
- signal(SIGSEGV, SignalHandler);
- signal(SIGFPE, SignalHandler);
- signal(SIGBUS, SignalHandler);
- signal(SIGPIPE, SignalHandler);
- }
3.具体实例
1.http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html
重点在于尝试继续运行程序
告诉用户那些因为这些未拦截的异常和信号导致的崩溃,或者自己记录,甚至可以避开这样导致的崩溃.不过,如果多个信号拦截了,这可能失效.
非常推荐看看这篇文章
2.http://parveenkaler.com/2010/08/11/crashkit-helping-your-iphone-apps-suck-less/
重点在于记录异常(之后返回主线程)
- - (void)pumpRunLoop
- {
- self.finishPump = NO;
- CFRunLoopRef runLoop = CFRunLoopGetCurrent();
- CFArrayRef runLoopModesRef = CFRunLoopCopyAllModes(runLoop);
- NSArray * runLoopModes = (NSArray*)runLoopModesRef;
- while (self.finishPump == NO)
- {
- for (NSString *mode in runLoopModes)
- {
- CFStringRef modeRef = (CFStringRef)mode;
- CFRunLoopRunInMode(modeRef, 1.0f/120.0f, false);
- }
- }
- CFRelease(runLoopModesRef);
- }
分享到:
相关推荐
《Xcode 16.1真机调试包详解与应用》 在iOS开发领域,Xcode作为Apple官方的集成开发环境(IDE),是每一位开发者必备的工具。Xcode 16.1版本的发布,为开发者带来了更多优化和新特性,特别是针对真机调试功能的改进...
8. **错误与崩溃日志**:真机调试时,Xcode会记录设备上的错误和崩溃信息,方便定位问题原因。这些日志可以通过Xcode的Console工具查看,也可以导出用于离线分析。 9. **权限管理**:在真机上,开发者可以测试应用...
4. **真机调试**:真机调试是Xcode的核心功能之一,它让开发者能够在真实设备上测试应用程序,以便更准确地模拟用户行为和设备性能。Xcode 15.4可能改进了设备连接的稳定性,以及调试过程中的性能监控和错误报告。 ...
每个版本的iOS系统都有对应的设备支持文件,这些文件包含了Xcode需要的调试信息和SDK,以便与不同版本的iOS设备进行通信。在Xcode中,当你选择一个特定的iOS版本进行真机调试时,就是依赖这些文件。 "13.5"这个...
让 Xcode 支持真机调试 iOS14.2(beta) 打开 访达 (command + shift + G )前往文件夹 拷贝到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport目录下重启 Xcode 即可
同时,开发者需要在Xcode的偏好设置中添加他们的Apple Developer账户,以便能够安装和调试签名的应用程序。在进行真机调试时,开发者可以通过Xcode的调试工具,如断点、控制台输出、内存分析等来查找和修复代码中的...
5. **错误调试**:当遇到运行时错误或警告时,查看Xcode的控制台输出和日志,可以帮助定位问题所在。 6. **自动化测试**:利用Xcode的UI测试框架(XCTest)编写自动化测试用例,以确保应用在iOS 11.2上的各种场景下...
4. **错误处理与崩溃报告**:在真机调试过程中,开发者要密切关注应用的错误日志和崩溃报告,及时发现并修复可能的问题。 5. **性能优化**:针对iOS 16的新特性,比如改进的后台刷新机制,开发者可以优化应用的后台...
4. 设置断点:在代码中设置断点,当执行到这些位置时,程序会暂停,方便查看变量值、调用堆栈等信息。 5. 调试操作:在暂停状态下,你可以检查和修改变量值,单步执行代码,查看调用栈,使用条件断点等调试工具。 ...
《Xcode 14.0 真机调试包详解》 在iOS应用开发领域,Xcode作为苹果官方的集成开发环境(IDE),扮演着至关重要的角色。Xcode 14.0的发布,为开发者提供了更为先进的工具和技术,使得在iOS 14平台上进行真机调试变得...
3. **配置Xcode**:在Xcode的项目设置中选择正确的设备和目标iOS版本。 4. **运行和调试**:点击Xcode中的“运行”按钮,应用将被部署到设备上并开始调试。 总之,"Xcode 真机调试包 15.5系统"是为了帮助开发者解决...
5. **调试设置**:在Xcode的运行配置中选择目标设备,开启必要的调试选项,如Breakpoints和Console输出。 总的来说,Xcode 11.4的真机调试功能为iOS开发者提供了强大的支持,通过充分利用这些特性,开发者可以更...
Xcode 12.3真机调试包,操作如下: 前往--应用程序/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport文件夹,拖到文件目录下之后重启 Xcode 即可。
5. **调试**:在设备上操作应用时,Xcode的调试工具栏会显示相应的日志输出、变量值、断点等信息。你可以使用这些工具进行代码级调试,比如设置断点、查看堆栈信息、实时修改变量值等。 6. **问题排查**:如果遇到...
iOS 15.0的真机调试文件,放到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 目录下重启XCode即可。
4. **压缩包内容**:“13.0”这个文件名可能是指Xcode 13.0的安装文件或者是一些必要的组件,如证书、配置文件等,用于设置真机调试环境。安装或使用这个压缩包时,开发者可能需要将这些文件放到指定的位置,或者...
4. 调试工具增强:Xcode的调试功能是其一大亮点,15.6版本可能会有更强大的断点管理、性能分析工具以及内存检测功能,帮助开发者定位和修复问题。 5. Core Data与CloudKit整合:Xcode 15.6可能提供了更好的Core ...
Xcode 12.3真机调试包,操作如下: 前往--应用程序/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport文件夹,拖到文件目录下之后重启 Xcode 即可。
升级手机系统10.1以后真机调试就报错了,只需要将这个文件下载拷贝到Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport下面重启xcode就行了
通过Xcode的调试工具栏,你可以控制应用的执行流程,设置断点,查看变量值,以及分析内存和CPU的使用情况。 此外,Xcode 11.3还提供了强大的Interface Builder,让开发者可以直接在设计视图中构建用户界面,而无需...