2012-05-03 13 views
7

Tôi đang sử dụng Xcode 4.3.2 với lldb làm trình gỡ lỗi của mình.Làm cách nào để đặt điểm ngắt biểu tượng trên _WebThreadLockFromAnyThread trong Xcode?

Tôi đã thừa hưởng một dự án có chứa mã được gọi UIKit từ chủ đề thứ yếu, như thể hiện bởi các thông điệp ghi:

2012-05-02 21: 48: 14,603 AppName Dev [77.594: 16e0f] void _WebThreadLockFromAnyThread (bool), 0x8d5f810: Lấy khóa web từ một chủ đề khác với chuỗi chính hoặc chuỗi web. Không nên gọi UIKit từ chuỗi phụ.

Tôi đã xóa hầu hết mã đang thực hiện cuộc gọi UIKit từ chuỗi phụ, nhưng tôi vẫn thỉnh thoảng nhìn thấy thông báo này trong nhật ký. Ứng dụng không bị lỗi, do đó khó xác định vị trí của sự cố.

tôi muốn thiết lập một breakpoint trên _WebThreadLockFromAnyThread, nhưng khi tôi cố gắng thiết lập một breakpoint biểu tượng sử dụng:

b _WebThreadLockFromAnyThread 

trình gỡ lỗi nói với tôi:

breakpoint thiết --name ' _WebThreadLockFromAnyThread 'Breakpoint được tạo: 12: name =' _WebThreadLockFromAnyThread ', locations = 0 (đang chờ xử lý) CẢNH BÁO: Không thể giải quyết điểm ngắt cho bất kỳ địa điểm thực tế nào.

Tôi cũng đã thử tạo điểm ngắt biểu tượng bằng giao diện người dùng trong trình điều hướng điểm ngắt, nhưng tôi không chắc chắn nên nhập gì vào mô-đun. Khi tôi để trống mô-đun, điểm ngắt được tạo nhưng nó vẫn không phá vỡ khi thông báo tường trình xuất hiện trong bảng điều khiển gỡ lỗi.

Bất cứ ai có thể cho tôi biết cách tôi có thể đi thêm điểm ngắt trên _WebThreadLockFromAnyThread và cách tôi xác định mô-đun xác định cho biểu tượng này là gì?

Trả lời

2

Chỉ cần bỏ dấu gạch dưới. b WebThreadLockFromAnyThread làm việc cho tôi trong cả lldb và gdb. Bây giờ, đây là Xcode 4.6, vì vậy nếu bạn đang mắc kẹt trên phiên bản cũ, tôi cho rằng có thể có vấn đề trong phiên bản đó không có trong 4.6.

+0

Tuyệt vời, cảm ơn rất nhiều! Tôi đã kết thúc bằng cách sử dụng lệnh tương tự sau đây cũng đặt một điều kiện sao cho nó chỉ phá vỡ nếu hàm được gọi bên ngoài luồng chính: 'break set -n WebThreadLockFromAnyThread -c '! (BOOL) [NSThread isMainThread]'' – Greg

0

Bạn có thể thử sử dụng lệnh nm hoặc công cụ xếp lớp để định vị mô-đun.

+0

Tôi đã thử sử dụng nm trên tệp thực thi mà Xcode đã tạo khi tôi tạo ứng dụng của mình, nhưng biểu tượng không nằm trong đó. – Greg

0

Rất có thể không có biểu tượng nào bạn cần vì xcode theo mặc định tạo bản dựng "phát hành" nếu tôi viết đúng các ký hiệu làm cho tệp exec nhỏ hơn nhiều. Tôi không chắc chắn làm thế nào vào lúc này nhưng bạn cần phải tìm tùy chọn để chuyển sang "gỡ lỗi" xây dựng mà sẽ đảm bảo để có tất cả những biểu tượng đáng yêu đang chờ phân tích của bạn.

+0

Tôi đang làm việc với một bản dựng có "Strip Debug Symbols In Copy" được đặt thành "Không". – Greg