2011-09-16 5 views
5

Tôi đang sử dụng bộ xử lý tín hiệu trong ứng dụng Objective-C để phát hiện lỗi nghiêm trọng, như SIGSEGV, SIGBUS và các loại tương tự.Xcode: GDB và bộ xử lý tín hiệu

Khi tín hiệu như vậy được nâng lên, tôi đang viết một tệp nhật ký, với một backtrace và chi tiết về lỗi (Tôi biết tôi có thể có vấn đề reentrancy, nhưng đó không phải là điểm).

Bằng cách này, tôi có thể biết vào lần khởi chạy tiếp theo rằng ứng dụng đã gặp sự cố và tôi có thể hỏi người dùng nếu anh ta muốn điền vào báo cáo lỗi.

Nó hoạt động tốt khi tôi khởi chạy ứng dụng theo cách thủ công.

Nhưng khi tôi chạy nó từ Xcode (với GDB), các trình xử lý tín hiệu không được gọi.

Tôi đã cố gắng đặt chúng với signal hoặc sigaction, nhưng không có sự khác biệt.

Tôi cũng đã kiểm tra với info signals rằng những tín hiệu đó được đặt thành pass, có nghĩa là chúng sẽ được chuyển đến ứng dụng.

Đó không phải là vấn đề lớn, vì tôi chỉ gặp vấn đề này khi tôi gỡ lỗi ứng dụng của mình, nhưng sẽ rất tuyệt khi làm việc đó với GDB.

Có ai có kinh nghiệm và giải quyết vấn đề như vậy không?

+0

Bạn có thể muốn đặt các tín hiệu này thành nostop trong gdb, do đó ứng dụng của bạn được quản lý. – steve

+0

Tôi đã thử trước khi đặt câu hỏi, nhưng tôi đoán tôi đã phạm sai lầm vì nó không hoạt động. Hôm nay tôi đã thử lại, và nó hoạt động như một sự quyến rũ. Bạn có thể muốn điền vào một câu trả lời với điều này, vì vậy tôi có thể chấp nhận nó. Cảm ơn :) – Macmade

Trả lời

1

Bạn có thể muốn đặt các tín hiệu này thành nostop trong gdb, do đó ứng dụng của bạn quản lý.