美文网首页
GDB和LLDB的区别

GDB和LLDB的区别

作者: Felix的笔头 | 来源:发表于2018-08-15 11:25 被阅读0次

    什么是GDB和LLDB
    我们在开发iOS程序的时候常常会用到调试跟踪,如何正确的使用调试器来debug十分重要。xcode里有内置的Debugger,老版使用的是GDB,xcode自4.3之后默认使用的就是LLDB了。

     GDB:
     UNIX及UNIX-like下的调试工具
    
     LLDB:
     LLDB是个开源的内置于XCode的具有REPL(read-eval-print loop)特征的Debugger,其可以安装C++或者Python插件。
    

    所以他们两个都是调试用的Debugger,只是LLDB是比较高级的版本,或者在调试开发iOS应用时比较好用,不然人家苹果为什么换成了LLDB了呢!

    lldb与gdb命令名的对照表:http://lldb.llvm.org/lldb-gdb.html

    REPL ( pronounced "repple" )

    「读取-求值-输出」循环(英语:Read-Eval-Print Loop,简称REPL)是一个简单的,交互式的编程环境。这个词常常用于指代一个Lisp的交互式开发环境,但也能指代命令行的模式和例如APL、BASIC、Clojure、F#、Haskell、J、Julia、Perl、PHP、Prolog、Python、R、Ruby、Scala、Smalltalk、Standard ML、Swift、Tcl、Javascript这样的程序语言所拥有的类似的编程环境。这也被称做交互式顶层构件(interactive toplevel)

    LLDB的常用命令:

    1> po:打印对象,会调用对象 description 方法。是 print-object 的简写;命令po跟p很像,p输出的是基本类型,po输出的Objective-C对象。调试器会输出这个 object 的 description。
    
    2> expr:可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令
    
    3> print:也是打印命令,需要指定类型
    
    4> bt:打印调用堆栈,是 thread backtrace 的简写,加 all 可打印所有thread 的堆栈
    
    5> br l:是 breakpoint list 的简写
    
    6> n:是换行
    
    7> p:是打印这个对象所属的类,即其父类

    相关文章

      网友评论

          本文标题:GDB和LLDB的区别

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