GDB和LLDB的区别

2018-08-15  本文已影响0人  Felix的笔头

什么是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:是打印这个对象所属的类,即其父类
上一篇 下一篇

猜你喜欢

热点阅读