Develop Tools

LLDB 命令和调试(一)

2016-03-26  本文已影响201人  BluePandaLi

LLDB 命令和调试(一)

为什么要学习 LLDB 调试

对于我们程序员来说,构建调试几乎是每天必做的工作。 你是否遇到过下列情况?

  1. 想打印对象的 description 来追踪对象.
  2. 调试界面的时候想改变某个 view 的颜色以便查看界面布局.
  3. 有些代码在某些特定条件下才能满足,但程序运行时未必达到这个条件.

此时我们一般会默默的按下 Command + . , 增加一段代码, NSLog(...) , view.backgroundColor = [UIColor redColor] 等等,再次按下 Command + r 查看运行状态, 运气好我们能顺利的达到目的,运气不好就要重复这个步骤几次,而且调试之后还要默默删掉。一天下来腰酸背痛手抽筋... , 来放弃这种重复的重体力劳动吧, 我们来学一个新技能 LLDB 调试 ,学会它之后你就像会了左右互搏, 双剑合璧, 九阴真经, 玉女素心剑法... 咳咳 , 扯远了我们言归正传。

什么是LLDB

官方说明 http://lldb.llvm.org/index.html

LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.

LLDB is the default debugger in Xcode on Mac OS X and supports debugging C, Objective-C and C++ on the desktop and iOS devices and simulator.

....

Wikipedia https://en.wikipedia.org/wiki/LLDB_(debugger)

Current state

Although LLDB is in early development, it is mature enough to support basic debugging of programs writtenten in C, Objective-C, C++ and Swift.

LLDB is known to work on OS X, Linux, FreeBSD, and Windows[2] and supports i386, x86-64 and ARM instruction sets.[3] It is used as a default debugger for Xcode 4.3 and later versions

由以上资料可知,LLDB 是下一代高性能的调试器,现在已经支持在多个平台运行,支持 C, C++, Objective-C,Swift。从 LLVM 编译器语言无关的特性来看,以后有可能会支持更多的语言。

Xcode 从4.3版本开始就集成该调试器了,现在更是变成了默认选项。可以简单的认为 LLDB 的调试命令是 Xcode 可视化调试的底层支撑,所以这样类似九阴真经的东西,我们还是有必要了解一下的。

Preview

首先让我们先预览以下我们学完之后可以做什么,例如我们有下面这样一个例子:当按钮按下时,随机生成r、g、b 值, 当 r 为奇数的时候生成 view,并使用 r,g,b 的值设置了一个 view 的 frame, 并在每次点击的时候都更改 view 的 tintColor 属性。

LLDB_1-w1000

现有如下需求,我们需要在调试的时候知道:

这时候我们只要在如图位置打两个断点


LLDB_1_2-w1000

按下 Command + E + LeftClick 对断点进行如下编辑

LLDB_1_3-w1000 LLDB_1_4-w1000

Command + R 运行,按几次按钮来触发断点,我们能看到 Output窗口正输出按下的次数,第一个断点并不触发,当 maskView 创建成功时第二个断点被触发,此时 Output 输出了按下次数 $runnumber, frame, tintColor。


(int) $0 = 0
(int) $runnumber = 1
maskView frame is {{0, 197}, {116, 72}}, tint color is UIDeviceRGBColorSpace 0.772549 0.454902 0.282353 1

至此调试结束,是不是感觉很简单,但如果我们不用 LLDB 命令调试,我们至少要进行以下几个步骤:

而使用 LLDB 命令与 Xcode 可视化共同协作之后,调试变的很灵活,我们可以

怎么样心动了没,从下一节开始,让我们一起来学习 LLDB 调试命令吧~

上一篇下一篇

猜你喜欢

热点阅读