与调试器共舞 - LLDB 的华尔兹
来源:互联网 发布:cvr100身份证阅读软件 编辑:程序博客网 时间:2024/05/16 08:33
19 Dec 2014
你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值?
NSLog(@"%@", whatIsInsideThisThing);
或者跳过一个函数调用来简化程序的行为?
NSNumber *n = @7; // 实际应该调用这个函数:Foo();
或者短路一个逻辑检查?
if (1 || theBooleanAtStake) { ... }
或者伪造一个函数实现?
int calculateTheTrickyValue { return 9; /* 先这么着 ...}
并且每次必须重新编译,从头开始?
构建软件是复杂的,并且 Bug 总会出现。一个常见的修复周期就是修改代码,编译,重新运行,并且祈祷出现最好的结果。
但是不一定要这么做。你可以使用调试器。而且即使你已经知道如何使用调试器检查变量,它可以做的还有很多。
这篇文章将试图挑战你对调试的认知,并详细地解释一些你可能还不了解的基本原理,然后展示一系列有趣的例子。现在就让我们开始与调试器共舞一曲华尔兹,看看最后能达到怎样的高度。
LLDB
LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)
你以前有可能已经使用过调试器,即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。GDB to LLDB 参考是一个非常好的调试器可用命令的总览。你也可以安装 Chisel,它是一个开源的 LLDB 插件合辑,这会使调试变得更加有趣。
与此同时,让我们以在调试器中打印变量来开始我们的旅程吧。
基础
这里有一个简单的小程序,它会打印一个字符串。注意断点已经被加在第 8 行。断点可以通过点击 Xcode 的源码窗口的侧边槽进行创建。
程序会在这一行停止运行,并且控制台会被打开,允许我们和调试器交互。那我们应该打些什么呢?
help
最简单命令是 help
,它会列举出所有的命令。如果你忘记了一个命令是做什么的,或者想知道更多的话,你可以通过 help <command>
来了解更多细节,例如 help print
或者 help thread
。如果你甚至忘记了 help
命令是做什么的,你可以试试 help help
。不过你如果知道这么做,那就说明你大概还没有忘光这个命令。
- 与调试器共舞 - LLDB 的华尔兹
- 与调试器共舞 - LLDB 的华尔兹
- 与调试器共舞 - LLDB 的华尔兹
- 与调试器共舞 - LLDB 的华尔兹
- iOS objc.io#19#与调试器共舞 - LLDB 的华尔兹
- xcode + lldb简单的调试
- LLDB 调试 UI 的技巧
- LLDB调试
- LLDB调试
- lldb调试
- lldb 调试
- LLDB调试
- LLdb调试
- LLDB调试
- Xcode基础知识与调试lldb命令
- 小笨狼与LLDB的故事
- Xcode的控制台调试命令 LLVM lldb
- Xcode的控制台调试命令 LLVM lldb
- ARM_s5pv210_porting_2
- A+B for Input-Output Practice (VIII)(没啥用,来凑数)
- 4-5 求自定类型元素的最大值
- mysql 批量insert
- AnimTextView
- 与调试器共舞 - LLDB 的华尔兹
- JavaScript 初识
- 工具之OpenGrok的搭建方法
- [MySQL] 实例讲解MYSQL数据库的查询优化技术
- iOS开发之上架AppStore
- linu 任何用户都无法登陆服务器
- JavaScript常用语句表达式
- 4-6 求单链表结点的阶乘和
- 我的大学