Xin chào, tôi đang trong quá trình gỡ lỗi ứng dụng C++ trên mac os 10.5. Thỉnh thoảng, tôi sẽ làm điều gì đó xấu và gây ra một hành vi xâm phạm hoặc một hoạt động bất hợp pháp khác. Điều này dẫn đến ứng dụng bị treo trong một thời gian và cuối cùng là hộp thoại hệ thống thông báo cho tôi về sự cố. Thời gian chờ giữa "treo" và hộp thoại là đáng kể; một vài phút. Nếu tôi cố gắng loại bỏ các ứng dụng hoặc kill -9
nó từ dòng lệnh không có gì xảy ra. Nếu tôi khởi động ứng dụng từ trình gỡ rối (gdb), khi gặp sự cố, tôi sẽ quay lại lời nhắc gdb và có thể thoát khỏi quá trình này một cách sạch sẽ. Đó không phải là lý tưởng mặc dù gdb chậm tải.Gỡ lỗi và diệt các ứng dụng trên Mac OS X?
Dù sao, các bạn có thể giới thiệu điều gì đó không? Có cách nào để tắt cơ chế báo cáo sự cố trong OS X không?
Cảm ơn.
Cập nhật 1: Dưới đây là những thây ma bị bỏ sót từ việc thực thi XCode. Rõ ràng xcode không thể ngăn chặn chúng đúng cách.
1 [email protected]:~$ ps auxw|grep -i Reader 2 eightieight 28639 0.0 0.0 599828 504 s004 R+ 2:54pm 0:00.00 grep -i reader 3 eightieight 28288 0.0 1.1 1049324 45032 ?? UEs 2:46pm 0:00.89 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 4 eightieight 28271 0.0 1.1 1049324 45036 ?? UEs 2:45pm 0:00.89 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 5 eightieight 28146 0.0 1.1 1049324 44996 ?? UEs 2:39pm 0:00.90 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 6 eightieight 27421 0.0 1.1 1049328 45024 ?? UEs 2:29pm 0:00.88 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 7 eightieight 27398 0.0 1.1 1049324 45044 ?? UEs 2:28pm 0:00.90 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader
Bạn đang sử dụng XCode? Nếu vậy, bạn không nên nhìn thấy hộp thoại Crash Reporter. Ngoài ra, bạn đang xây dựng một ứng dụng dựa trên GUI hay chỉ là một ứng dụng giao diện điều khiển? Chỉnh sửa: ngẫu nhiên, trong trường hợp bạn đang sử dụng XCode, nếu bạn gặp lỗi EXEC_BAD_ACCESS trong khi chạy ứng dụng GUI trong XCode, bạn có thể chỉ cần nhấn biểu tượng dừng để chấm dứt ngay ứng dụng đang chạy. – Tom
Vâng, nếu tôi chạy các ứng dụng của tôi trong XCode hoặc gdb, mọi thứ hoạt động chính xác. Khi tôi nhận được một segfault, các ứng dụng giảm trở lại vào trình gỡ lỗi và tất cả mọi thứ là rất tốt. Tuy nhiên, nếu tôi chạy các ứng dụng từ giao diện điều khiển nó dường như treo mãi mãi. – EightyEight
Bạn gọi ứng dụng như thế nào?Thông thường, nếu một ứng dụng gặp khó khăn, trò chơi kết thúc, quá trình này sẽ chết. Tuy nhiên, nếu bạn đã quản lý để gọi nó từ một số môi trường khác, có lẽ một số tài nguyên cho quá trình đó được tổ chức mở và nó không thể bỏ đi và bạn đang chờ quá trình cha mẹ làm điều gì đó đầu tiên (và nó có thể có vấn đề phát hiện một cái gì đó đã đi awry). –