2011-01-26 42 views
15

Có cách nào để theo dõi các thay đổi biến đổi hoặc thay đổi bộ nhớ trong Xcode không? Tôi đang tìm các chức năng như điểm ngắt dữ liệu của Visual Studio.Biến theo dõi hoặc thay đổi bộ nhớ trong Xcode?

Tôi muốn biết khung xem của đối tượng đang được thay đổi ở đâu. Tôi muốn thiết lập một điểm ngắt tại một biến thành viên và chạy nó. Sau đó, tôi có thể xác định nơi nó đã thay đổi.

Trả lời

19

Xcode sử dụng gdb (hoặc lldb, nhưng đó là một câu chuyện khác) để triển khai chức năng gỡ lỗi của nó. gdb có khả năng thiết lập các điểm quan sát phần cứng và do đó Xcode cũng vậy.

This là trang hữu ích để gỡ lỗi chung về lỗi bộ nhớ. Cửa sổ bàn điều khiển gỡ lỗi của Xcode thực sự chỉ là một vỏ gdb, bạn có thể nhập các lệnh như bạn muốn. Quinn Taylor luôn hữu ích giải thích cách làm như vậy trong bài viết liên quan this.

Nếu bạn muốn tránh tương tác trực tiếp với gdb, bạn có thể nhấp chuột phải vào biến trong cửa sổ gỡ lỗi của Xcode và chọn "Xem biến". Xcode sau đó sẽ cảnh báo bạn bất cứ khi nào giá trị của biến của bạn đã được thay đổi.

+0

Đánh giá cao câu trả lời chi tiết! Tôi sẽ thử! – SeniorLee

+0

Không bao giờ nghĩ phải nhấp chuột phải vào các biến trong cửa sổ xem! Bây giờ để hy vọng nó thực sự đạt nó;) Có vẻ ropey đủ chỉ hiển thị các giá trị biến - nói với tôi vars địa phương nằm ngoài phạm vi thực sự không hữu ích –

+0

@LaceySnr: kiểm tra câu trả lời của tôi. Tôi có cùng một vấn đề với đồng hồ XCode. Đó là lý do tại sao tôi đang sử dụng điểm quan sát gdb. –

1

Có.

Trong trình đơn Chạy có "Trình gỡ rối" cung cấp giao diện trực quan cho gdb.

Ngoài ra, còn có nút breakpoint bên cạnh nút Xây dựng và Chạy. Bạn có thể nhấp vào đó và quản lý các điểm ngắt của mình trong phần Chạy> Quản lý điểm ngắt.

+1

Tôi không chắc chắn đây là những gì anh đang tìm kiếm. Bạn đang nói về các điểm ngắt tiêu chuẩn, nhưng anh ta đang nói về việc phá vỡ khi dữ liệu được lưu trữ tại một vị trí trong các thay đổi bộ nhớ. Giống như một điểm quan sát hơn là điểm dừng. –

+0

OK. Vâng, tôi không biết nếu có bất kỳ "gây nên" như thế. Tuy nhiên, thông qua Debugger và sử dụng các điểm ngắt tiêu chuẩn, bạn có thể thấy dữ liệu thay đổi. Có lẽ không trơn tru như Visual Studio. – aqua

9

Bạn có thể sử dụng hardware watchpoints.


Bạn có để có được địa chỉ của biến bạn muốn theo dõi (loại p &my_var tại dấu nhắc gdb).

Nó sẽ in somehting như 0x12345678.

  • Với gdb: type watch *(int *)0x12345678.

  • Với LLĐB: watch set expression (int *)0x12345678 (hoặc w s e (int *)0x12345678)

này giả định biến của bạn là một int. Nó sẽ tạo ra một quan điểm phần cứng trên địa chỉ này.


Hy vọng điều này sẽ hữu ích.

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