2012-12-23 10 views
20

lldbを使用してiOSアプリケーションをデバッグしようとしていますが、デバッグ時に本当に奇妙なエラーが発生しています。lldbエラー:タイプのオブジェクトにプロパティが見つかりません

私のブレークポイントの前にいくつかの行は、私が持っている:

私はlldbで print frameコマンドを使用して、問題なくアクセスできる

CGRect frame = view.frame;

。私はlldbで再びフレームにアクセスしようとすると、しかし、私はprint view.frameを入力し、次のエラーを取得:

error: property 'frame' not found on object of type 'UIView *'

私はviewを確認することができ、これには意味がありませんがUIView*インスタンスであり、持っていますこの特定のlldbエラーが私にたくさんを発生し、私ができる

(UIView *) $4 = 0x1e199bf0 <MyAppCustomView: 0x1e199bf0; frame = (3398 3396; 204 208); layer = <CALayer: 0x1e199ce0>>

po viewを入力し、正しい結果を取得することにより、フレームと呼ばれる有効なプロパティこのエラーの原因を見つけることはできません。誰かがProperty 'count' not found on object of type 'NSMutableArray *' PO command in lldbに、gdbを(gdb) p view.frameとして使用することを提案しましたが、私はerror: '(gdb)' is not a valid command.を取得しています.gdbコマンドが "うまくいく"と疑われます。とにかく別のデバッガの内部にあります。

ランダムに発生するこのバグの提案や回避策はありますか?

+0

印刷[ビューフレーム] –

+0

すでに試してみました:エラー:知られていないメソッド '-frame';メソッドの戻り値の型にメッセージをキャストする –

+0

print [(UIView *)ビューフレーム]どちらも動作しません –

答えて

50

メッセージ送信のドット表記はlldbではサポートされていません。ブラケット表記を使用し、CGRectに結果をキャスト:

p (CGRect)[view frame] 
+0

(lldb)p [ビューフレーム] エラー:既知のメソッド '-frame'はありません。メッセージの送信をメソッドの戻り値の型 –

+0

にキャストしてください。明白にそれをキャストすべき理由は何ですか?そして時にはそれが起こる理由を知っていれば、lldbはキャストなしでpo/printで完璧に作業していますか? –

+3

@canpoyrazoğluLLDBがランタイムに照会するときに、印刷したい非オブジェクトのタイプを認識していないため、キャストすると約束されたタイプになります。 – CodaFi

3

念のために上記に(変数のセルのためのフレーム、のUITableViewCellから派生したクラスを探して、それは私のためにしなかった)動作しません。余分な括弧を強制的にlldbの少し小唄脳を助けるように見えた:

p ((CGRect)[cell frame]) 

プレストマジコ:

(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44) 
+0

lldbは外側のかっこなしでまだ不平を言っているので、 – inix

関連する問題