2009-08-19 32 views
23

Trong gỡ lỗi giao diện điều khiển luôn khạc nhổ cho tôi một thông báo lỗi: "Break trên _NSLockError() để gỡ lỗi"Break on _NSLockError() để gỡ lỗi ... Làm thế nào để?

giả định của tôi là: trong XCode tôi phải xuất hiện một breackpoint nhất định, do đó debugger dừng lại ở điểm nơi này lỗi xảy ra.

Tôi làm cách nào để thực hiện việc này?

Trả lời

14

1/Từ menu chọn Build -> Build và Debug

2/Nhấp vào biểu tượng "GDB" - bạn sẽ được chuyển sang "Debugger console"

3/Kiểm soát Nhấn Ctrl + C để làm gián đoạn nhị phân của bạn. Bạn sẽ nhận được dấu nhắc gdb.

4/nhập "b _NSLockError" và tiếp tục thực hiện sau khi đặt điểm ngắt.

(gdb) b _NSLockError 
Breakpoint 8 at 0x911db1a9 
(gdb) c 
Continuing. 

5/bạn có thể tương tác với GDB cũng giống như nó được chạy từ giao diện điều khiển, tức là bạn có thể Ctrl + C một lần nữa và xem breakpoint hiện tại:

(gdb) info breakpo 
Num Type   Disp Enb Address What 
8 breakpoint  keep y 0x911db1a9 <_NSLockError+9> 
+0

Cảm ơn !!! Đó chính xác là những gì tôi đang tìm kiếm :) – Nobik

+0

Đôi khi tôi thấy dễ dàng hơn để gỡ lỗi các tệp nhị phân của mình khỏi Terminal.app bằng cách chạy chúng từ bên trong GDB, nghĩa là "gdb /path_to/App.app/Contents/MacOS/App" – diciu

+0

Hmm ... nó dễ dàng hơn để làm theo cách của tôi, vì nó sẽ tiếp tục áp dụng trên các phiên gỡ lỗi ... –

12

Để làm điều này tự động cho dự án của bạn trong XCode :

  1. Trong Xcode, Option-Command-B để mở cửa sổ Breakpoint (hoặc Run> Show> Breakpoints).
  2. Trường hợp thông báo "Nhấp đúp vào biểu tượng", nhấp đúp ... và dán vào "_NSLockError".
  3. Bấm bất cứ nơi nào khác trong cửa sổ, nhập cảnh mới của bạn sẽ tự động được cập nhật (hoặc chỉ cần thêm nó bằng tay) với Mô-đun = "Foundation" (không có dấu ngoặc kép)
  4. Xây dựng & Go và bây giờ bạn sẽ thả vào trình gỡ lỗi tự động khi bạn nhấn một bế tắc tự động phát hiện.
41

Sử dụng Xcode 4 GUI:

  1. Mở navigator Breakpoints (Command + 6 hoặc View> Navigators> Hiển thị Breakpoint Navigator)
  2. Nhấp vào '+' ở góc dưới bên trái và chọn 'Thêm symbolic Breakpoint ...'
  3. Nhập '_NSLockError' trong lĩnh vực Symbol
  4. Nhập 'Foundation' trong lĩnh vực mô-đun
  5. Nhấp vào 'Xong'

Như trên trình gỡ lỗi sẽ phá vỡ khóa mà kết quả trong một bế tắc để bạn có thể kiểm tra callstack và hy vọng xác định nơi khóa ban đầu xảy ra.

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