12

重複の可能性:
GDBとLLDBデバッガー

LLDBとGDBデバッガーの違いを詳しく知りたいです。どこでも「LLDBはGDBよりも高速でメモリ効率が良い」と言われています。それがどのような意味でより速く、メモリ効率が良いのか知りたいです。

  1. LLDBを使用すると、デバッグ領域の変数ビューに、その特定のクラスまたはビューコントローラーのメンバー変数が表示されません(カウント)。また、オブジェクトが追加されたときにローカル配列にオブジェクトは変数ビューに表示されませんが、オブジェクトの数(カウント)が表示されます。

    例(変数ビュー):

    arrayOfComments NSMutableArray *0x068a67001オブジェクト

    -> NSArray NSArray

    -> NSObject

  2. GDBを使用すると、デバッグ領域の変数ビューに、その特定のクラスまたはビューコントローラーのメンバー変数が表示されます。また、オブジェクトが追加されるとローカル配列にオブジェクトとカウントが変数ビューに表示されます。

    例(変数ビュー):

    arrayOfComments __NSArrayM *0x68d79701オブジェクト

    ->0コメント*0x6804940(オブジェクトはここに表示されます)

  3. LLDBがドット構文を理解しているという記事に出くわしました。

    po self.property

    しかし、GDBで使用すると、「po self.property.previousProperty'sProperty」でも機能しますが、LLDBでは機能しません。では、LLDBはドット構文をどのように理解するのでしょうか。

助けてください。

ありがとうございました。

4

2 に答える 2

6

コンパイラによって異なります。lldbデバッガーを「AppleLLVMコンパイラ3.0」で使用し、gdbをGCCフレーバー(「LLVMGCC4.2」を含む)で使用することをお勧めします。

デバッグに役立つと思ったリンクは次のとおりです。

http://lldb.llvm.org/tutorial.html

http://www.corbinstreehouse.com/blog/2007/10/instruments-on-leopard-how-to-debug-those-random-crashes-in-your-cocoa-app/

http://www.markj.net/iphone-memory-debug-nszombie/

http://www.cocoadev.com/index.pl?DebuggingAutorelease

これらのリンクはあなたを助けるかもしれないと思います

于 2012-12-21T04:51:24.930 に答える
-2

「LLDBは基本的なコマンドラインデバッグをサポートしており、スクリプト化可能です」。LLDBはマルチスレッドデバッグもサポートしているため、LLDBはGDBデバッガーよりもはるかに高速で効率的です。

ここで私はこれの証拠を提示しています。

引数なしでプロセスを起動します。

GDB

(gdb)実行

(gdb)r


LLVM

(lldb)プロセスの起動

(lldb)実行

(lldb)r

このLLDBデバッガーを実行すると、正確なアイデアが得られます 。

于 2012-12-21T04:56:23.747 に答える