2009-04-12 23 views
17

Tôi có hành động điểm ngắt và đang sử dụng tùy chọn Đăng nhập từ menu thả xuống. Tôi muốn in ra giá trị chuỗi (tóm tắt). Tôi đang làm điều này:Làm thế nào để in chuỗi giá trị từ hành động breakpoint trong Xcode 4?

the person name is: @[email protected] 

nhưng in địa chỉ bộ nhớ. Tôi có thể chuyển sang tùy chọn Lệnh gỡ lỗi và làm

po f.name 

nhưng sau đó tôi mất mô tả, như được sử dụng trong tùy chọn đầu tiên. Sử dụng tùy chọn Đăng nhập, có cách nào để in giá trị chuỗi chứ không phải địa chỉ bộ nhớ không?

Trả lời

17

Có một vài điều bạn có thể làm. Thêm chức năng Đăng nhập từ menu thả xuống, sau đó thêm một hộp khác và chọn Debugger Command và nhập po f.name.

Nếu bạn muốn đăng nhập của bạn là phức tạp hơn, bạn có thể làm một cái gì đó như thế này:

the person name is: @(const char *)[(NSString*)[p.name description] UTF8String]@ 

Bạn đặt cược tốt nhất có lẽ là để chỉ cần sử dụng giao diện đồ họa của debugger để xem biến. Nếu bạn muốn đăng nhập tin nhắn, hãy sử dụng NSLog.

+1

Trong trường hợp của tôi, XCode chỉ đơn giản là bỏ qua bất cứ điều gì tôi gõ. Loại trình gỡ rối có quan trọng không (nghĩa là GDB/LLDB)? – futureelite7

+1

@ futureelite7 Cả GDB và LLDB đều có thể thực hiện điều này. Bạn có thể thử sử dụng hành động "Biểu thức" thay vì "Thông điệp tường trình", sau đó chỉ cần 'NSLog' ở đó. Vì vậy, trong cửa sổ "Expression" bạn gõ một cái gì đó như: '(void) NSLog (@" Đăng nhập biến này:% @ ", aVariable);' –

+1

@JasonCoco có vẻ như hành động Expression không có trong Xcode 4.6. – Snowcrash

4

Tôi đã kết thúc bằng cách sử dụng 2 hành động khác nhau cho cùng một điểm ngắt. Đầu tiên một bản ghi và sau đó một lệnh gỡ rối với po varName. Nhược điểm duy nhất nó sẽ in trong 2 hàng khác nhau.

enter image description here

+0

Bạn có thể sử dụng một hành động như Jason gợi ý – Philip007

26

Bạn có thể sử dụng báo cáo NSLog với breakpoint sử dụng "Debugger Command", nhưng bạn cần phải thêm "expr"

expr (void)NSLog(@"The Person Name is %@", p.name) 

-

using expr command with a Debugger Command as breakpoint in Xcode 4.4

+1

Điều này có Tôi bối rối cho một chút, trong biểu thức của bạn, bạn đang sử dụng "thay vì" để báo giá. Họ trông gần giống hệt nhau trong Xcode. Đối với bất cứ ai khác, trong khi nó đã ở đó nó đã đưa ra lỗi này 'lỗi: bất ngờ '@' trong chương trình ' – Mike

+0

Cảm ơn Mike, tôi không chú ý đến điều này, nó phải được tự động thay thế trong khi tôi sao chép/dán biểu thức, sửa nó – auco

7

Đây là một giải pháp chỉ sử dụng một hành động và sử dụng ít ký tự hơn giải pháp expr.

debugger command using NSlog

Tuy nhiên, trừ khi bạn thêm các void như thế này:

po (void)NSLog(@"the person name is: %@", p.name) 

bạn sẽ nhận được một gây phiền nhiễu "nil" in ra với đăng nhập của bạn. ví dụ:

(lldb) po NSLog(@"foo") 
nil 
2013-06-19 14:42:59.025 TheMove[95864:c07] foo 

(lldb) po (void)NSLog(@"foo") 
2013-06-19 14:43:10.758 TheMove[95864:c07] foo 

Nếu bạn có thể sống với con số không (Tôi có thể) đó là nhanh hơn để gõ và dễ nhớ chỉ là po

+0

Tôi đã cố gắng sử dụng cú pháp @ expr @ nhiều lần với rất ít thành công. một giải pháp thực sự đơn giản, cảm ơn! – LunaCodeGirl

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