2015-02-18 14 views
7

Bạn có thể dễ dàng đặt điểm quan sát trong XCode bằng cách làm theo các bước sau (btw nếu có cách đơn giản hơn, tôi muốn biết điều đó ...):
- Chạy chương trình
- Đặt điểm ngắt trong mã nơi biến của bạn được sử dụng
- khi đạt đến điểm ngắt, hãy sử dụng nhấp chuột phải vào biến và chọn 'Xem' tênOfTheVariable "'
- Tiếp tục thực hiện.

Vấn đề duy nhất là việc thực hiện sẽ ngừng mỗi khi giá trị biến thay đổi. Tôi muốn XCode tiếp tục thực thi mà không dừng lại, tức là chỉ hiển thị các thay đổi giá trị trong đầu ra của bàn điều khiển.
Tính năng này dường như có sẵn trong chế độ dòng lệnh và mặc dù ban đầu tôi muốn tránh nó, tôi đã đăng một giải pháp bằng chế độ đó (xem bên dưới), vì nó có vẻ là cách duy nhất để thực hiện những gì tôi muốn. hiển thị các thay đổi biến.Trong XCode 6 làm thế nào bạn có thể thiết lập một điểm quan sát mà không dừng thực hiện?

+0

Tôi không biết làm thế nào để làm điều đó nhưng có lẽ bạn có thể sử dụng KVO để một nslog khi nó thay đổi? https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html thiết lập người quan sát về điều bạn muốn theo dõi, sau đó sử dụng phương thức xuất để nslog trạng thái hiện tại – Ben

+0

Vâng, nhưng đó là không phải những gì tôi đang tìm kiếm. Ngoài ra, điều này có thể chỉ có sẵn cho iOS.Tôi cũng có thể thêm các dòng DBG ở khắp mọi nơi biến được sửa đổi ... – DrMad

Trả lời

14

Có vẻ như cách duy nhất để đạt được điều này là sử dụng dòng lệnh LLDB. Vì vậy, đối với những người bạn của những người, như tôi, chưa bao giờ sử dụng nó ở đây là một cách step-by-step (trên thực tế khá dễ dàng) để sử dụng nó và xem các biến mà không dừng thực hiện:

  1. Đặt một breakpoint trong Xcode (bấm vào bên trái của dòng nguồn của bạn), nơi mà các biến bạn muốn xem được sử dụng (trong phạm vi), và chạy mã của bạn cho đến khi nó đạt đến điểm ngắt.
  2. Trong giao diện điều khiển (cửa sổ nhỏ được hiển thị ở góc dưới cùng bên phải nơi bạn có thể hiển thị các điều khiển), bạn sẽ thấy lời nhắc (lldb). Đây là nơi bạn nhập các lệnh sau:
    w s v stuff(hoặcwatchpoint set variable stuff), nơi những thứ là tên của biến bạn muốn xem
    w c a(hoặcwatchpoint command add) để nhập một chế độ kịch bản nơi bạn nhập một lệnh trên mỗi dòng như sau sau khi '>'
    p stuff(hoặcprint stuff) để hiển thị các công cụ mới giá trị biến
    c(hoặccontinue) để tiếp tục thực hiện
    DONEđể kết thúc kịch bản này ít (chú ý ký tự chữ hoa!)

đó là nó! Bạn có thể xóa điểm ngắt và tiếp tục thực hiện. Từ đó, các tin nhắn sẽ được hiển thị trong giao diện điều khiển mỗi khi biến "stuff" được cập nhật, mà không dừng việc thực thi mã của bạn (nó có thể làm chậm nó một chút, nhưng điều đó thường không quan trọng).

+0

Trong trường hợp này, cá nhân tôi sẽ tìm thấy nó tốt hơn, nếu bạn đã sử dụng phiên bản dài của lệnh lldb . Sau đó, nó sẽ dễ hiểu hơn, điều này thực sự làm. –

+0

Vâng tôi nghĩ tôi sẽ hiển thị các lệnh ngắn nhất sẽ là những gì bạn sử dụng, nhưng tôi đồng ý nó giúp nhớ chúng hiển thị phiên bản dài. Vì vậy, tôi đã chỉnh sửa câu trả lời của mình ... :) – DrMad

+0

Bạn có thể thêm như ví dụ về những gì chúng tôi sẽ nhập liệu nếu chúng tôi muốn in một cái gì đó như 'p self.m_someObj.m_someString'? Nó không có vẻ là làm việc cho tôi, một số lỗi xuất hiện. Tôi cũng đã thử '->' thay vì '.' để không có kết quả. – CyberMew

1

Dễ dàng, đặt điểm ngắt nhấp chuột phải vào nó và sửa đổi nó. Có rất nhiều tùy chọn có tên "tự động tiếp tục sau khi đánh giá hành động".

+1

Đó không phải là những gì tôi yêu cầu. Tôi đã nói quan điểm, không phải điểm ngắt. – DrMad

+0

Đây chính xác là những gì tôi đã mô tả! Bạn chỉ cần thiết lập một breakpoint và chỉnh sửa nó để sửa đổi nó như một watchpoint! Tin tôi đi, thử đi! –

+0

OK. Chỉ để làm cho tôi hiểu bạn và bạn hiểu tôi ... Tôi có một biến gọi là "công cụ" có thể được sửa đổi ở nhiều nơi khác nhau trong mã của tôi. Tôi muốn trình gỡ lỗi trong XCode hiển thị: "Điểm quan sát 1 lần truy cập" với giá trị cũ và mới giống như khi bạn đặt điểm quan sát, mỗi khi biến công cụ được sửa đổi ở đâu đó trong mã. Tôi không thấy bất kỳ tùy chọn nào cho phép trong lệnh chỉnh sửa điểm ngắt ... Nếu bạn vẫn tin rằng tôi có thể, bạn có thể vui lòng cho tôi các bước chính xác để làm điều đó không? – DrMad

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