2013-08-19 30 views
12

Tôi đang sử dụng Xcode và muốn đặt điểm ngắt nói một NSString từ mã của tôi. Những gì tôi đang làm là đặt điểm ngắt, sau đó chỉnh sửa điểm ngắt. Tôi thêm một hành động "Shell Command". Đối số đầu tiên là say và đối số thứ hai là nơi tôi gặp sự cố.Sử dụng lệnh Say trên điểm ngắt trong Xcode

NSString *myString = @"This is a test"; 

Nếu tôi đặt @[email protected] làm đối số thứ hai, nó đọc địa chỉ bộ nhớ. ví dụ 0x0b4be130

Nếu tôi thử @[myString UTF8String], nó mang lại cho tôi một địa chỉ bộ nhớ khác.

Nếu tôi dereference myString, @*[myString UTF8String]@, nó chỉ cho tôi ký tự đầu tiên của chuỗi.

Làm cách nào để thực hiện việc này đúng cách?

Trả lời

12

LLDB thực sự có trình thông dịch Python sẵn có, với toàn bộ thư viện LLDB được tiếp xúc với nó. Bạn có thể truy cập điều này bằng lệnh gỡ lỗi script. Với điều này, chúng ta có thể dễ dàng lấy một biểu diễn chuỗi của một biến trong khung và gửi nó đến lệnh OS nói. Thêm hành động trình gỡ lỗi:

script os.system("say " + lldb.frame.GetValueForVariablePath("myVariable").description) 

để đạt được những gì bạn muốn. Bạn thậm chí có thể gói các kịch bản lệnh Python thành các lệnh "LLDB" mới, vì vậy bạn có thể tạo ra một lệnh gỡ rối được gọi là say mô tả rõ ràng các mô tả đối tượng cơ bản; hãy xem http://lldb.llvm.org/python-reference.html để biết giới thiệu về cách thiết lập các loại tập lệnh này.

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