2012-08-16 20 views
8

Tôi đang nhúng MonoTouch vào dự án Xcode và muốn dừng trình gỡ lỗi LLDB xử lý tín hiệu SIGBUS, vì chúng được sử dụng bởi thời gian chạy đơn. Làm thế nào tôi có thể làm điều đó?Làm thế nào để báo cho trình gỡ lỗi LLDB không xử lý SIGBUS?

+1

Theo http://stackoverflow.com/questions/10431579/permanently-configuring-lldb-in-xcode-4-3-2-not-to-stop-on-signals, "xử lý xử lý SIGBUS -n đúng -p true -s false "nên làm trò lừa. –

Trả lời

18

Bạn có thể kiểm soát cách lldb chặn/chuyển tín hiệu bằng lệnh "xử lý quy trình". Trong trường hợp của bạn, bạn muốn thực hiện

(lldb) pro hand -p true -s false SIGBUS 
NAME  PASS STOP NOTIFY 
========== ===== ===== ====== 
SIGBUS  true false true 

bây giờ các tín hiệu sẽ được chuyển đến quy trình của bạn mà không bị cản trở. Trường "NOTIFY" cho biết liệu lldb có nên in ra tín hiệu được nhận hay không - mặc định là nó sẽ được in trong bảng điều khiển trình gỡ lỗi nhưng điều đó dường như không xảy ra ngay bây giờ. Nhưng tín hiệu được truyền chính xác, đó là bit quan trọng.

+3

Có cách nào để thiết lập điều này trong XCode không? – ed22

+1

Thêm điểm ngắt ví dụ: trên main() và sau đó trong hành động breakpoint của nó, thêm một lệnh LLDB với dòng này trong nó, sau đó kiểm tra hộp kiểm "continue after breakpoint". – uliwitness

+1

Để thực hiện điều này tự động trong Xcode, thêm lệnh vào '~/.lldbinit-Xcode'. Nếu bạn muốn điều này áp dụng ngay cả khi sử dụng 'lldb' từ dòng lệnh, hãy thêm nó vào' ~/.lldbinit' – Buzzy