web-dev-qa-db-ja.com

LLDBには便利な変数($ var)がありますか?

LLDBには 便利な変数 がありますか?その場合、どのように使用しますか?そうでない場合、私が使用できる同様のものはありますか?

リファレンス: http://software.intel.com/sites/products/documentation/hpc/atom/application/debugger/commands143.html

44
an0

ようやく自分で理解しました。 LLDBでhelp exprを実行すると、次のように表示されます。

ユーザー定義変数:便宜上、または後続の式で使用するために、独自の変数を定義できます。 Cで変数を定義するのと同じ方法でそれらを定義します。ユーザー定義変数の最初の文字が$の場合、変数の値は将来の式で使用できます。それ以外の場合は、現在の式でのみ使用できます。

だから私はexpr int $foo = 5が欲しい。

53
an0

今日はこれで苦労しました。 LLDBでObjective-C変数を処理する方法は次のとおりです。

expr UIApplication *$app = (UIApplication *)[UIApplication sharedApplication]
expr UIWindow *$keyWindow = (UIWindow *)[$app keyWindow]

lLDBは、呼び出しをネストせず、すべての呼び出しで戻り値の型を明示的に指定する場合に最適に機能することがわかりました。

それでも、後でUIViewでinitWithFrame:を機能させようとすると、セグメンテーション違反が発生します。 :/

24
escrafford

次の形式を使用してください:

(lldb) expr var

彼らの tutorial から:

(lldb) expr self
$0 = (SKTGraphicView *) 0x0000000100135430
(lldb) expr self = 0x00
$1 = (SKTGraphicView *) 0x0000000000000000

関数を呼び出すこともできます:

(lldb) expr (int) printf ("I have a pointer 0x%llx.\n", self)
$2 = (int) 22
I have a pointer 0x0.
(lldb) expr self = $0
$4 = (SKTGraphicView *) 0x0000000100135430
7
john.k.doe