Xcode遇到了诡异开发问题
2015-11-02 16:22
369 查看
事情是这样, 从开发到测试, 开发的过程中没有出现bug, 但是测试的时候固定重现了bug, 而bug的crash log又不明显, 只是指向了box2d的update中
很怪异的问题, 我这里不报错, 对方那里报错, 用排除法吧
1.中转传输导致二进制错误
2.设备差异错误
3.debug和release差异错误
考虑第一个问题应该问题不会太大, 通过各种方式传输, 都会出现一样的错误, 于是直接到我机器上来调试, 看看是不是设备差异问题, 于是我发现对方手机在本项目中跑debug并不会出现之前的固定崩溃错误
于是我试了一下, 发现确实release版本才会崩溃, 就算是手头的设备也一样, 于是我在认证的部分release也发不成debug, 果不其然还是崩溃了
知道怎么回事就可以去详细的调节了
现在教大家一个在debug环境也能调试出release的bug的方法:
配置运行时编译release版本
证书部分从automatic改为手动选择, release选择使用dev证书
这时候debug运行就会抛出release一样的错误, 并且打断点
原因也清晰了
这里吐槽一下box2d错误问题
最大的问题在于userdata这里 , userdata对应的是 void* 泛指针, 存的时候无所谓, 但是取的时候是无法进行判断的, 也无法使用dynamic来处理, 只能强转类型, 也许是debug下c++的内存有保护机制, 没有崩溃掉, 在release下彻底垮塌
下次会注意userdata下只存储固定一类对象或者基类, 但是这个写法真的好么, 虽然效率很高, 但是出错总是在这节骨眼上
很怪异的问题, 我这里不报错, 对方那里报错, 用排除法吧
1.中转传输导致二进制错误
2.设备差异错误
3.debug和release差异错误
考虑第一个问题应该问题不会太大, 通过各种方式传输, 都会出现一样的错误, 于是直接到我机器上来调试, 看看是不是设备差异问题, 于是我发现对方手机在本项目中跑debug并不会出现之前的固定崩溃错误
于是我试了一下, 发现确实release版本才会崩溃, 就算是手头的设备也一样, 于是我在认证的部分release也发不成debug, 果不其然还是崩溃了
知道怎么回事就可以去详细的调节了
现在教大家一个在debug环境也能调试出release的bug的方法:
配置运行时编译release版本
证书部分从automatic改为手动选择, release选择使用dev证书
这时候debug运行就会抛出release一样的错误, 并且打断点
原因也清晰了
这里吐槽一下box2d错误问题
最大的问题在于userdata这里 , userdata对应的是 void* 泛指针, 存的时候无所谓, 但是取的时候是无法进行判断的, 也无法使用dynamic来处理, 只能强转类型, 也许是debug下c++的内存有保护机制, 没有崩溃掉, 在release下彻底垮塌
下次会注意userdata下只存储固定一类对象或者基类, 但是这个写法真的好么, 虽然效率很高, 但是出错总是在这节骨眼上
相关文章推荐
- 神器SystemTap
- Python 七步捉虫法
- Lua编程示例(一):select、debug、可变参数、table操作、error
- C#中的两种debug方法介绍
- 用Ruby实现一个单元测试框架的教程
- js调试工具 Javascript Debug Toolkit 2.0.0版本发布
- php debug 安装技巧
- Visual Studio 2010崩溃重启问题(源文件编译崩溃)
- Lua中的异常处理pcall、xpcall、debug使用实例
- 在Python编程过程中用单元测试法调试代码的介绍
- javascript 有趣而诡异的数组
- Android APK使用Debug签名重新打包 Eclipse更改默认Debug签名
- xcode 4 制作静态库图文详解
- 解决 Xcode 6-Beta2 智能提示bug
- XCode编译速度慢的处理方法
- mac git xcrun error active developer path 错误
- Xcode使用教程详细讲解(全)
- Cocos2d开发1:Xcode与TexturePacker的集成
- windows下objective-c的cocoa框架编程,可以有图形界面哟
- Node.js 学习笔记之一