美文网首页
[iOS-基础-BBC]LLDB调试

[iOS-基础-BBC]LLDB调试

作者: 走进科学 | 来源:发表于2017-09-30 11:02 被阅读8次

0. 为什么写LLDB的文章

  • 我看的有的同事在开发的时候:临时想看一个变量的值,就在对应代码行写上一个Log >> 编译 >> 运行 >> 到指定页面 >> 观察控制台.看到这里请反省一下自己是否现在还在用这种令人窒息的操作?如果是,那么这篇文章对你很重要请务必认真阅读;

1.LLDB简介

*LLDBXCode5之后自带的debugger.
*LLDB的homepageLLDB,有兴趣可以去自行了解.

  • 其实你在之前就已经接触并使用到了LLDB,如下图中所示堆栈区var展示区控制台、和toolbar均为LLDB的操作区域.其中除了控制台以外其余的3个区域为XCodeLLDB可视化展示.(即其余3个区域的功能都在控制台中得到实现)

2. LLDB指令

  • Xcode进入断点Crash时都会进入LLDB,此处的LLDB及表示已经进入LLDB并可输入LLDB指令.

2.1 help指令

  • 直接输入help指令会打印出所有的LLDB指令
image.png
  • 输入help <command-name> 会打印特定指令的相关说明
image.png

2.2 print、printobject 、call指令

2.2.1 print指令

  • print指令(可简写为p)为打印基本信息打印基本类型的值,或者打印对象的类型和指针.
image.png

2.2.2 printobject指令

  • printobject(可简写为po)为打印对象信息的指令,即调用对象的 description方法,和NSLog作用相同
image.png

2.2.3 call指令

  • call指令可以执行一行代码但不会处理其返回值:如下图所示redViewbackgroundColor设置错误了,我们可以通过call指令修改过来
  • 总结:三种指令均可执行指令附带的代码,尽在返回结果上的处理不同.p指令打印返回值的基本信息,po指令打印返回值的description,call指令不打印返回值.绝大多数情况下用po指令即可.

2.3 thred指令

  • 如图所示代码将断点打在37行
image.png
  • 控制台结果如下,左侧的var展示区则显示了当前作用域的变量

    image.png
  • 此时如果我想获取p_do1中的变量值改怎么做?

    • 输入指令thread backtrace 获取堆栈信息:当前栈为frame #0, p_do1栈为frame #1;
image.png
  • 输入 frame select 1指令进入p_do1的栈内,左侧变显示其作用域内的变量信息.
    image.png

2.4 return指令

  • Debug的时候,也许会因为各种原因,我们不想让代码执行某个方法,或者要直接返回一个想要的值。这时候就该thread return上场了。
    thread return可以接受一个表达式,调用命令之后直接从当前的frame返回表达式的值。

  • 如下图此代码在控制台的打印结果应该是25963

    image.png
  • 但是在断点处输入thread return 1024打印结果结变为1024

image.png

3. 最后LLDB还有更多强大的功能,但是由于个人能力和时间有限,仅能讲到这里.有兴趣的小伙伴可以深入研究并分享.谢谢!

相关文章

  • [iOS-基础-BBC]LLDB调试

    0. 为什么写LLDB的文章 我看的有的同事在开发的时候:临时想看一个变量的值,就在对应代码行写上一个Log >>...

  • [译]用 LLDB 调试 Swift 代码

    [译]用 LLDB 调试 Swift 代码 [译]用 LLDB 调试 Swift 代码

  • android jni开放中的一些知识点

    lldb调试查看内存 lldb调试更多使用方式问百度

  • iOS LLDB调试

    掌握以下lldb命令,够用. ### LLDB调试总结 eNSString*$str=@"test"...

  • iOS调试工具 - LLDB

    LLDB LLDB是 Xcode 默认的调试工具, 支持调试 c, c++, Objective-C.支持的调试平...

  • iOS之LLDB常用调试命令

    iOS之LLDB常用调试命令熟练使用 LLDB,让你调试事半功倍使用facebook开源的Chisel调试Home...

  • ptrace反调试

    一、iOS调试 iOS调试里面非常常见的就是LLDB调试,LLDB是Xcode自带的调试工具,既可以本地调试Mac...

  • LLDB 调试学习

    LLDB调试必看:与调试器共舞 - LLDB 的华尔兹Facebook/Chisel 安装chisel: Alte...

  • Xcode 调试之 LLDB

    LLDB 是 Xcode 中的默认调试器,支持调试 C、Objective-C、C++,用 LLDB 调试代码的好...

  • 知识点-LLDB调试命令

    lldb是我们平时在打断点时候,打印面板出现的。 lldb是Xcode自带的调试工具,下面是常用的lldb调试命令...

网友评论

      本文标题:[iOS-基础-BBC]LLDB调试

      本文链接:https://www.haomeiwen.com/subject/nckgextx.html