免费开源的iOS开发学习平台

LLDB调试工具简介之一:常用命令

LLDB简介

LLDB是LLVM下的调试器。Xcode从4.0开始编译器开始改用LLVM,相应的调试器也从gdb改为LLDB,而从 Xcode5.0开始所有工程也被自动设置为使用LLDB。

相比于原先的GCC编译器,LLVM编译器有如下优点:

  • LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.
  • LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.
  • LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析的. 这样可以在编辑的时候就可以很好的了解你的代码.

输出对象

在LLDB中提供了pop两个命令来输出对象或变量的值,其中:

  • po代表print object,可以输出一个对象description方法中可以打印的内容;
  • p代表print,可以输入变量的值。

断点管理

在Xcode中,可以在代码的任意位置添加断点(breakpoint),对于断点的管理本质上也是由LLDB操作的,只不过通过图形化的方式实现了LLDB中的命令。

LLDB中有关断点管理的常用命令有:

  • 查看所有断点:breakpoint list (简化命令br l
  • 继续执行:continue (简化命令c
  • StepOver: next (简化命令n
  • StepIn: step (简化命令s
  • 取消某个断点: breakpoint disable 断点编号 (简化命令br dis 断点编号
  • 删除某个断点: breakpoint delete 断点编号 (简化命令br del 断点编号
  • 终止程序运行:kill

查看栈地址对应的代码位置

image 命令可用于寻址,有多个组合命令,比较实用的用法是用于寻找栈地址对应的代码位置,在查错过程中是可以使用。

  • 查看地址对应的代码位置:image lookup --address 内容地址(简化命令im loo --a 代码位置