Xcode的控制台调试命令
XCode4.0以后,编译器换成了LLVM 编译器 2.0
与以前相比,更加强大:
1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.
2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.
3.LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析的. 这样可以在编辑的时候就可以很好的了解你的代码.
编译器进化之后,控制台调试命令前缀,也由原来的gdb更改成了lldb,所以当你看到控制台没有gdb而出现lldb的时候,不用惊慌,因为我们以前常用的调试命令依然可以使用:
使用前提:
1.既然是调试命令,理所当然的,程序模式应该选择Debug模式。
2.在Debug模式下,如果你的程序在运行中崩溃(Crash)掉,那么恭喜你,使用lldb调试的机会来了。
符合以上两个条件之后,控制台(即日志输出窗口All Output)会自动打出一个(lldb)命令,你在其后输入bt,回车。
恭喜你,这时Xcode会自动输出最后的一次调用堆栈。如下:
- * thread #1: tid = 0x1f03, 0x0132edee CoreFoundation`___forwarding___ + 206, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
- frame #0: 0x0132edee CoreFoundation`___forwarding___ + 206
- frame #1: 0x0132ecb2 CoreFoundation`_CF_forwarding_prep_0 + 50
- frame #2: 0x00002e60 testMVC`-[ViewCtrl2 touchesBegan:withEvent:] + 128 at ViewCtrl2.m:40
- frame #3: 0x013c9e99 CoreFoundation`-[NSObject performSelector:withObject:withObject:] + 73
- frame #4: 0x000ffc49 UIKit`forwardTouchMethod + 268
- frame #5: 0x000ffb38 UIKit`-[UIResponder touchesBegan:withEvent:] + 30
- frame #6: 0x0003a2cf UIKit`-[UIWindow _sendTouchesForEvent:] + 272
- frame #7: 0x0003a5e6 UIKit`-[UIWindow sendEvent:] + 273
- frame #8: 0x00020dc4 UIKit`-[UIApplication sendEvent:] + 464
- frame #9: 0x00014634 UIKit`_UIApplicationHandleEvent + 8196
- frame #10: 0x012b2ef5 GraphicsServices`PurpleEventCallback + 1274
- frame #11: 0x0139c195 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
- frame #12: 0x01300ff2 CoreFoundation`__CFRunLoopDoSource1 + 146
- frame #13: 0x012ff8da CoreFoundation`__CFRunLoopRun + 2218
- frame #14: 0x012fed84 CoreFoundation`CFRunLoopRunSpecific + 212
- frame #15: 0x012fec9b CoreFoundation`CFRunLoopRunInMode + 123
- frame #16: 0x012b17d8 GraphicsServices`GSEventRunModal + 190
- frame #17: 0x012b188a GraphicsServices`GSEventRun + 103
- frame #18: 0x00012626 UIKit`UIApplicationMain + 1163
- frame #19: 0x000026fa testMVC`main + 170 at main.m:16
- frame #20: 0x00002645 testMVC`start + 53
当然还有其他的命令(和gdb命令通用):
- 命令 解释
- break NUM 在指定的行上设置断点。
- bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
- clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
- continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。
- display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
- file FILE 装载指定的可执行文件进行调试。
- help NAME 显示指定命令的帮助信息。
- info break 显示当前断点清单,包括到达断点处的次数等。
- info files 显示被调试文件的详细信息。
- info func 显示所有的函数名称。
- info local 显示当函数中的局部变量信息。
- info prog 显示被调试程序的执行状态。
- info var 显示所有的全局和静态变量名称。
- kill 终止正被调试的程序。
- list 显示源代码段。
- make 在不退出 gdb 的情况下运行 make 工具。
- next 在不单步执行进入其他函数的情况下,向前执行一行源代码。
- print EXPR 显示表达式 EXPR 的值。
- print-object 打印一个对象
- print (int) name 打印一个类型
- print-object [artist description] 调用一个函数
- set artist = @"test" 设置变量值
- whatis 查看变理的数据类型
使用lldb调试工具,结合上文解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled一起使用,实在是查找crash的一大利器啊,很是方便!
http://blog.csdn.net/likendsl/article/details/7576549
Xcode的控制台调试命令的更多相关文章
- 手机抓包xcode自带命令行工具配合wireshark实现
三.最佳方式:rvictl命令 优点:简单,而且可以抓所有网络接口的数据: 缺点:似乎没有,要求手机iOS5以上不算要求吧?如果说缺点,就是这个命令是Xcode的Command Line Tools ...
- 关于XCode 的agvtool命令行
简介:用agvtool如何来自动更新版本号和bulid version agvtool是一个命令行工具,允许你自动递增到下一个最高的数量或具体的数字这些数字.本文档提供了更新您的构建和版本号码使用 ...
- Xcode 的expression命令
expression命令是执行一个表达式,并将表达式返回的结果输出,是LLDB调试命令中最重要的命令,也是我们常用的 p 和 po 命令的 鼻祖. 他主要有2个功能 (1) 执行表达式 举例:改变视图 ...
- 利用终端统计 Xcode代码数量命令
直接利用终端命令进入工程文件夹然后写下或复制以下命令 find . -name "*.m" -or -name "*.h" -or -name "*. ...
- Xcode界面简介
创建 Object-C 程序 进入主界面方式 : 打开 Xcode 之后, 可以使用 Xcode 菜单, 但是必须创建一个 Object-C 工程 或者 导入 一个 Object-C 工程才可以进入主 ...
- 【IOS 开发】Object-C 入门 Xcode 环境具体解释
作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38424965 一. Xcode 环境安装 与 project ...
- 【IOS 开发】Object-C 入门 Xcode 环境详解
作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38424965 一. Xcode 环境安装 与 工程创建 1. ...
- lldb调试命令
XCode4.0以后,编译器换成了LLVM 编译器 2.0 与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 ...
- Mac OS X 中一些常用的命令行技巧
一.网络设置相关 1.网卡的物理地址的动态重置 出于某些需求,例如网络中的 IP 地址或网络帐号与网卡物理地址绑定,使得多个设备无法切换上网,可尝试临时更改物理地址.不过,系统偏好设置是不能修改网卡物 ...
随机推荐
- Spring MVC 解读——<context:component-scan/>
转自:http://my.oschina.net/HeliosFly/blog/203149 作者:GoodLoser. Spring MVC 解读---<context:component-s ...
- linux No manual entry for
我的博客:www.while0.com 原来除了安装man,还要安装man-pages. yum install man -y yum install man-pages -y
- Selenium 处理模态对话框
模态对话框的原理 模态窗口 点击下一步的动作为,聚焦到“下一步”,然后直接回车 driver.FindElement(By.CssSelector("div.rg_btn a")) ...
- java基础(十)面向对象(五)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- [转载]函数getopt(),及其参数optind
最近用到了getopt()这个函数,对它进行了一些了解.这篇博文还是写的非常清楚的.值得学习.最近在改进一个开源项目,希望自己能静下心好好分析代码. ------------------------- ...
- IOS学习之路十五(UIView 添加背景图片以及加边框)
怎样给UIview添加背景图片呢很简单,就是先给view添加一个subview,然后设为背景图片: 效果图如下: 很简单直接上代码: //设置内容 self.myTopView.backgroundC ...
- WebView Cache 缓存清除
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webv ...
- Android开发实例-健康食谱应用(一)
转载请注明出处:http://blog.csdn.net/einarzhang/article/details/44774635 本系列文章的重点是如何使用Android开发一个简单的健康食谱软件.使 ...
- 瑕疵(bug)严重性定义
======================== 严重性定义缺陷: o 最先进的–造成执行中断(应用程序崩溃),该功能未预期实现,测试等工作无法进行. o 急-事件是非常重要的,须要立即给予关注. o ...
- android 22 启动带2个action值的预定义acticity
main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...