iOS调试

今天讲讲iOS的调试。正式一点经验的总结,防止自己忘掉。

 基础调试工作

   首先看看苹果自己的LLDB(Lower Level DeBugger,底层调试器),讲到它我们就要先知道啥是dSYM文件,用人话来说就是调试信息文件,也就是存储着与目标有关的调试信息。

     在创建工程的时候,默认情况下编译器为自动创建一个调试文件,你可以在工程文件中的Build Setting->Build Options->Debug information Format 这里就是调试信息文件。但是有一个问题是dSYM文件是一个二进制文件,所以你还要想办法读取出来,所以,如果只是要获取崩溃信息报告,我会使用第三方的工具Crashlytics来获取崩溃报告(关于这个工具的简单实用可以参考这里:http://blog.devtang.com/blog/2013/07/24/use-crashlytics/)。

  断点:在调试应用的时候经常会使用到它,你可以通过Xcode界面中的Product->Debuge->Add Breakpoint at Current Line菜单命令设置,也可以快捷键Cmd + \添加,最简单的调试你可以在你要调试的代码旁边鼠标左击你就可以添加一个断点。

   上面讲的都是简单的调试,如果程序直接崩溃了,你就要知道常见的崩溃类型,

   EXC_BAD_ACCESS:引起这个崩溃信息的最常见的原因就是在你初始化变量的时候用错了所有权修饰符,也有可能是你访问了已经被释放掉的对象或者是向它发送信息。

   SIGSEGV:看到这个崩溃说明有可能你使用了不正确的类型转换。

   SIGBUS: 无效内存访问。

   EXC_ARITHMETIC:这个好像是除零错误。

 查找内存问题

      接下来要讲的是怎样利用Instruments中的Allocations模板查找内存问题,之所以不使用Leaks是因为Leaks一般只会检查为被引用的内存,而不能检测循环应用,而且如果你使用的Leaks模板,也会自动添加Allocations模板。

       接下来要讲讲,怎样使用Allocations模板,在Xcode中->Product->Profile启动Instrument(通过长按run就可以看到这个按钮了),在这里我想说的事,最好使用release模式下进行编译,因为这是用户安装到手机上的版本,所以使用这个比较合适。通过查看Allocations Instrument会直观的看到内存的状况 ,具体的细节可以参考(iOS 7 programming :Pushing the Limts)

启动分析之后,点击上面的图标展开右栏就可以查看然后看到这一栏在下面就会看到可能的泄露点,也就是颜色比较深的那个。

   还有一种方法,就是静态分析工具(Analyze)点击Product->Analze,这个可以静态分析可以的泄露点,其实这个也比较直观。

你可能感兴趣的:(ios,调试,analyze,instruments)