html5中文学习网

您的位置: 首页 > ios » 正文

IOSXcode调试攻略_IOS开发

[ ] 已经帮助:人解决问题

  1. Xcode内置GDB,可以使用GDB调试,调试命令:3UXHTML5中文学习网 - HTML5先行者学习网

  1.1 po 命令:为 print object 的缩写,显示对象的文本描述3UXHTML5中文学习网 - HTML5先行者学习网

  (lldb) po [$eax class]:输出异常对象的地址
3UXHTML5中文学习网 - HTML5先行者学习网

  (lldb) po [$eax name]:输出这个异常的名字
3UXHTML5中文学习网 - HTML5先行者学习网

  (lldb) po [$eax reason]:这个将会输出错误消息:
3UXHTML5中文学习网 - HTML5先行者学习网

  (lldb) “po $eax”:对这个对象调用“description”方法和打印出来3UXHTML5中文学习网 - HTML5先行者学习网

  “$eax”是cup的一个寄存器。在一个异常的情况下,这个寄存器将会包含一个异常对象的指针。注意:$eax只会在模拟器里面工作,假如你在设备上调试,你将需要使用”$r0″寄存器3UXHTML5中文学习网 - HTML5先行者学习网

  1.2 print 命令:有点类似于格式化输出,可以输出对象的不同信息3UXHTML5中文学习网 - HTML5先行者学习网

  比如:print (char*)[[dic description] cString]、(lldb) print (int)[label retainCount]3UXHTML5中文学习网 - HTML5先行者学习网

  1.3 info 命令:我们可以查看内存地址所在信息3UXHTML5中文学习网 - HTML5先行者学习网

  1.4 info line *内存地址:可以获取内存地址所在的代码行相关信息3UXHTML5中文学习网 - HTML5先行者学习网

  1.5 show 命令:显示 GDB 相关的信息。如:show version 显示GDB版本信息3UXHTML5中文学习网 - HTML5先行者学习网

  1.6 bt: 显示当前进程的函数调用栈的情况;"up num":查看调用的详细信息;down:返回栈列表;l:显示详细代码信息;p:输出数值。3UXHTML5中文学习网 - HTML5先行者学习网

  2. 添加全局断点(Add Exception BreakPoint):3UXHTML5中文学习网 - HTML5先行者学习网

  2.1 添加步骤:3UXHTML5中文学习网 - HTML5先行者学习网

  1. In the bottom-left corner of the breakpoints navigator, click the Add button.3UXHTML5中文学习网 - HTML5先行者学习网

  2. Choose Add Exception Breakpoint.3UXHTML5中文学习网 - HTML5先行者学习网

  3. Choose the type of exception from the Exception pop-up menu.3UXHTML5中文学习网 - HTML5先行者学习网

  4. Choose the phase of the exception handling process at which you want program execution to stop.3UXHTML5中文学习网 - HTML5先行者学习网

  5. Click Done.3UXHTML5中文学习网 - HTML5先行者学习网

  2.2 使用场景:3UXHTML5中文学习网 - HTML5先行者学习网

  程序因为SIGABRT而crash,想要定位到导致crash的行。3UXHTML5中文学习网 - HTML5先行者学习网

  3. 添加符号断点(Add Symbolic BreakPoint):3UXHTML5中文学习网 - HTML5先行者学习网

  3.1 断点执行的时机:Symbolic breakpoints stop program execution when a specific function or method starts executing3UXHTML5中文学习网 - HTML5先行者学习网

  3.2 添加步骤:3UXHTML5中文学习网 - HTML5先行者学习网

  1. Steps In the bottom-left corner of the breakpoint navigator, click the Add button.3UXHTML5中文学习网 - HTML5先行者学习网

  2. Choose Add Symbolic Breakpoint.3UXHTML5中文学习网 - HTML5先行者学习网

  3. Enter the symbol name in the Symbol field.3UXHTML5中文学习网 - HTML5先行者学习网

  4. Click Done.3UXHTML5中文学习网 - HTML5先行者学习网

  3.3 使用场景:3UXHTML5中文学习网 - HTML5先行者学习网

  当想让系统在某个指定条件处中断时,设置相应的断点。3UXHTML5中文学习网 - HTML5先行者学习网

  比如:3UXHTML5中文学习网 - HTML5先行者学习网

  objc_exception_throw:在系统抛出异常处设置断点。3UXHTML5中文学习网 - HTML5先行者学习网

  -[NSException raise]:3UXHTML5中文学习网 - HTML5先行者学习网

  4. 设置NSZombieEnabled、MallocStackLogging、NSAutoreleaseFreedObjectCheckEnabled、NSDebugEnabled:3UXHTML5中文学习网 - HTML5先行者学习网

  4.1 设置方法:3UXHTML5中文学习网 - HTML5先行者学习网

  1. Product->Edit Scheme...->Run...->EnvironmentVariables.3UXHTML5中文学习网 - HTML5先行者学习网

  2. add NSZombieEnabled,set the value with YES3UXHTML5中文学习网 - HTML5先行者学习网

  3. add MallocStackLogging, set the value with YES.3UXHTML5中文学习网 - HTML5先行者学习网

  4. add NSAutoreleaseFreedObjectCheckEnabled, set the value with YES.3UXHTML5中文学习网 - HTML5先行者学习网

  5. add NSDebugEnabled, set the value with YES.3UXHTML5中文学习网 - HTML5先行者学习网

  4.2 使用场景:3UXHTML5中文学习网 - HTML5先行者学习网

  主要为了解决EXC_BAD_ACCESS问题,MallocStackLogging用来启用malloc记录(使用方式 malloc_history ${App_PID} ${Object_instance_addr})。3UXHTML5中文学习网 - HTML5先行者学习网

  4.3 需要注意的问题3UXHTML5中文学习网 - HTML5先行者学习网

  NSZombieEnabled只能在调试的时候使用,千万不要忘记在产品发布的时候去掉,因为NSZombieEnabled不会真正去释放dealloc对象的内存。3UXHTML5中文学习网 - HTML5先行者学习网

  5. 重写respondsToSelector方法3UXHTML5中文学习网 - HTML5先行者学习网

  5.1 实现方式3UXHTML5中文学习网 - HTML5先行者学习网

  #ifdef _FOR_DEBUG_3UXHTML5中文学习网 - HTML5先行者学习网

  -(BOOL) respondsToSelector:(SEL)aSelector {3UXHTML5中文学习网 - HTML5先行者学习网

  printf("SELECTOR: %sn", [NSStringFromSelector(aSelector) UTF8String]);3UXHTML5中文学习网 - HTML5先行者学习网

  return [super respondsToSelector:aSelector];3UXHTML5中文学习网 - HTML5先行者学习网

  }3UXHTML5中文学习网 - HTML5先行者学习网

  #endif3UXHTML5中文学习网 - HTML5先行者学习网

  5.2 使用方法:3UXHTML5中文学习网 - HTML5先行者学习网

  需要在每个object的.m或者.mm文件中加入上面代码(应该可以使用类属实现),并且在other c flags中加入-D _FOR_DEBUG_(记住请只在Debug Configuration下加入此标记)。这样当你程序崩溃时,Xcode的console上就会准确地记录了最后运行的object的方法。3UXHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助