2012-12-23 47 views
20

Tôi đang cố gắng gỡ lỗi ứng dụng iOS của mình bằng lldb và tôi nhận được các lỗi thực sự kỳ lạ khi gỡ lỗi.lỗi lldb: không tìm thấy thuộc tính trên đối tượng thuộc loại

Một vài dòng trước khi breakpoint của tôi, tôi đã có:

CGRect frame = view.frame;

nào tôi có thể truy cập không có vấn đề với print frame lệnh trong LLĐB. Tuy nhiên, khi tôi cố gắng truy cập vào khung một lần nữa trong LLĐB, tôi gõ print view.frame và nhận được lỗi sau:

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

này không có ý nghĩa như tôi có thể xác minh view là một trường hợp UIView* và có một tài sản có giá trị gọi là khung bằng cách gõ po view và nhận được kết quả chính xác:

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

lỗi LLĐB đặc biệt này xảy ra với tôi rất nhiều, và tôi có thể không tìm thấy nguyên nhân của lỗi này. Có người đề nghị tại Property 'count' not found on object of type 'NSMutableArray *' PO command in lldb rằng người ta có thể sử dụng gdb là (gdb) p view.frame nhưng tôi nhận được error: '(gdb)' is not a valid command. và tôi rất nghi ngờ rằng lệnh gdb sẽ "hoạt động"? bên trong một trình gỡ rối khác.

Bất kỳ đề xuất hoặc giải pháp nào cho lỗi này xảy ra ngẫu nhiên?

+0

in [xem khung] –

+0

đã cố gắng: lỗi: phương pháp không biết 'frame'; gửi tin nhắn gửi đến kiểu trả về của phương thức –

+0

in khung nhìn [(UIView *)] không hoạt động hoặc –

Trả lời

50

Ký hiệu dấu chấm để gửi thư không được hỗ trợ trong lldb. Sử dụng ký hiệu khung và đúc kết quả để CGRect:

p (CGRect)[view frame] 
+0

(lldb) p [khung xem] lỗi: không có phương pháp 'khung hình' nào được biết; truyền tin nhắn gửi đến kiểu trả về của phương thức –

+0

sau khi chỉnh sửa nó hoạt động. bất kỳ lý do tại sao tôi nên explicityly cast nó? và bất kỳ ý tưởng tại sao nó sẽ xảy ra đôi khi, và nếu không, lldb chỉ là làm việc hoàn hảo với po/in mà không có bất kỳ phôi? –

+3

@ canpoyrazoğlu Bởi vì khi LLDB truy vấn thời gian chạy, nó không phải là nhận thức của các loại không phải đối tượng bạn muốn in, đúc cho nó một loại đã hứa. – CodaFi

3

Chỉ trong trường hợp trên không hoạt động (mà nó không cho tôi, tìm kiếm các khung cho một ô khác nhau, lớp có nguồn gốc từ UITableViewCell): buộc ngoặc thêm vẻ để giúp ít Ditty não LLĐB của:

p ((CGRect)[cell frame]) 

mau Magico:

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

Câu trả lời này phải là câu trả lời được chấp nhận vì lldb đó vẫn phàn nàn mà không có dấu ngoặc đơn bên ngoài. – inix

Các vấn đề liên quan