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会自动输出最后的一次调用堆栈。如下:

[cpp] view plain copy

print?

  1. * thread #1: tid = 0x1f03, 0x0132edee CoreFoundation`___forwarding___ + 206, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
  2. frame #0: 0x0132edee CoreFoundation`___forwarding___ + 206
  3. frame #1: 0x0132ecb2 CoreFoundation`_CF_forwarding_prep_0 + 50
  4. frame #2: 0x00002e60 testMVC`-[ViewCtrl2 touchesBegan:withEvent:] + 128 at ViewCtrl2.m:40
  5. frame #3: 0x013c9e99 CoreFoundation`-[NSObject performSelector:withObject:withObject:] + 73
  6. frame #4: 0x000ffc49 UIKit`forwardTouchMethod + 268
  7. frame #5: 0x000ffb38 UIKit`-[UIResponder touchesBegan:withEvent:] + 30
  8. frame #6: 0x0003a2cf UIKit`-[UIWindow _sendTouchesForEvent:] + 272
  9. frame #7: 0x0003a5e6 UIKit`-[UIWindow sendEvent:] + 273
  10. frame #8: 0x00020dc4 UIKit`-[UIApplication sendEvent:] + 464
  11. frame #9: 0x00014634 UIKit`_UIApplicationHandleEvent + 8196
  12. frame #10: 0x012b2ef5 GraphicsServices`PurpleEventCallback + 1274
  13. frame #11: 0x0139c195 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
  14. frame #12: 0x01300ff2 CoreFoundation`__CFRunLoopDoSource1 + 146
  15. frame #13: 0x012ff8da CoreFoundation`__CFRunLoopRun + 2218
  16. frame #14: 0x012fed84 CoreFoundation`CFRunLoopRunSpecific + 212
  17. frame #15: 0x012fec9b CoreFoundation`CFRunLoopRunInMode + 123
  18. frame #16: 0x012b17d8 GraphicsServices`GSEventRunModal + 190
  19. frame #17: 0x012b188a GraphicsServices`GSEventRun + 103
  20. frame #18: 0x00012626 UIKit`UIApplicationMain + 1163
  21. frame #19: 0x000026fa testMVC`main + 170 at main.m:16
  22. frame #20: 0x00002645 testMVC`start + 53

当然还有其他的命令(和gdb命令通用):

[cpp] view plain copy

print?

    1. 命令                        解释
    2. break NUM               在指定的行上设置断点。
    3. bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
    4. clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
    5. continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。
    6. display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
    7. file FILE               装载指定的可执行文件进行调试。
    8. help NAME               显示指定命令的帮助信息。
    9. info break              显示当前断点清单,包括到达断点处的次数等。
    10. info files              显示被调试文件的详细信息。
    11. info func               显示所有的函数名称。
    12. info local              显示当函数中的局部变量信息。
    13. info prog               显示被调试程序的执行状态。
    14. info var                显示所有的全局和静态变量名称。
    15. kill                    终止正被调试的程序。
    16. list                    显示源代码段。
    17. make                    在不退出 gdb 的情况下运行 make 工具。
    18. next                    在不单步执行进入其他函数的情况下,向前执行一行源代码。
    19. print EXPR              显示表达式 EXPR 的值。
    20. print-object            打印一个对象
    21. print (int) name      打印一个类型
    22. print-object [artist description]   调用一个函数
    23. set artist = @"test"    设置变量值
    24. whatis                  查看变理的数据类型
时间: 2024-08-03 16:48:55

Xcode 调试命令的相关文章

xcode调试命令

http://www.starfelix.com/blog/2014/03/17/lldbdiao-shi-ming-ling-chu-tan/ 版权声明:本文为博主原创文章,未经博主允许不得转载.

lldb调试命令

XCode4.0以后,编译器换成了LLVM 编译器 2.0 与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.3.LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析的. 这样可以在编辑的时候就可以很好的了解你的代码. 编译器进化之后,控制台调试命令前缀,也由原来的gdb更改成了ll

iOS 开发常用的调试命令

XCode4.0以后,编译器是LLVM,控制台调试命令前缀是lldb 第一.LLVM简介 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time).链接时间(link-time).运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本. 第二. 对关注编译技术的开发人员,LLVM提供了很多优点: 现代化的设计 LLVM的设计是高度模块化的,使得其代码更为清晰和便于排查问题

Xcode调试LLDB

一.简介 关于Xcode调试,相信大家很多会用断点调试,今天无意间在苹果开发的群里看到了po,瞬间心中有个疑问:po是什么?下面我就百度搜索了一下,介绍一点皮毛. 首先是LLDB,它的全名是lower level debug,意思就是底层调试器.原来苹果用的是GDB,后来发现GDB有一些问题无法解决,所以就用了LLDB,它是高性能的调试器,包括了完整的LLVM编译器,其中LLVM包括了Clang表达式解析器和反汇编程序,它可以理解OC语法.进而进行调试. 其次就是po,网上搜了一下还有p命令.p

Xcode调试之exc_bad_access以及 message sent to deallocated instance

如果出现exc_bad_access错误,基本上是由于内存泄漏,错误释放,对一个已经释放的对象进行release操作.但是xcode有时候不会告诉你错误在什么地方(Visual Studio这点做得很好).不过我们可以通过设置xcode环境变量环境变量NSZombieEnabled,MallocStackLogging查看错误的来源: 1.菜单 Product > Manage Schemes; 2.选中当前的Scheme,点Edit按钮: 3.设置环境变量.在Arguments > Envi

ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的

解决办法:把1删掉 2选择debug模式 ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的,布布扣,bubuko.com

xcode调试查看变量的值

对于IPhone开发/XCode的初学者,如何在调试时查看变量的值是很头痛的事情.因为Xcode的expression 经常无法正确显示变量的值.但是强大的GDB可以很方便的帮我们查看变量的值. 当执行到某断点时,在GDB窗口中使用po就可以查看变量.(po = print object) 1)查看String 或其它变量. po 变量名 2)查看某个Property.比如要查看item变量的name属性. po [item name]    注意,po item.name是不工作的. 3)查看

windbg 调试命令笔记1

一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开头 基本命令最少了,大概40个左右.列举所有的基本命令,使用如下命令: ? 元命令有一百多个,使用下面命令列举所有元命令: .help  [/D] 2. 基本信息 version    显示操作系统的版本信息以及Windbg本身的版本信息,Windbg的配置和操作系统密切相关,所以将操作系统的版本信

gdb对应vc调试命令

gdb vc调试对照表: 实现功能                vc                   gdb 修改后编译              f7                   make 跳出函数(step out)    shift+f11            finish,f 重新启动                ctrl+shift+f5        run,r 运行到指定行            f9+f5                tbreak,tb + c