2010-02-11 29 views
5

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 
+0

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

+0

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

+0

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). –

Trả lời

1

Có những CrashReporterPrefs app mà đi kèm với XCode (tìm kiếm nó với Spotlight; phải ở trong /Developer/Applications/Utilities). Điều đó có thể được thiết lập để Server Mode để vô hiệu hóa các ứng dụng 'Unexpectedly Quit' hộp thoại quá.

Dưới đây là another suggestion:

sudo chmod 000 /System/Library/CoreServices/Problem\ Reporter.app 

Để kích hoạt lại, làm như sau:

sudo chmod 755 /System/Library/CoreServices/Problem\ Reporter.app 

Nó có thể là ứng dụng được bán phá giá một tập tin lõi lớn - có thể bạn muốn chú ý đến hiệu lực thi hành trên không gian đĩa có sẵn mặc dù. Bạn có thể tắt tính năng bán phá giá lõi bằng cách sử dụng

sudo sysctl -w kern.coredump=0 

Kích hoạt lại bằng cách đặt =1.

+0

Vâng, tôi đã thử điều này rồi. Hộp thoại không còn bật lên nữa nhưng vẫn có độ trễ .. – EightyEight

+0

Tôi sẽ không tư vấn cho phương pháp 'chmod'. Sửa đổi tệp hoặc quyền của hệ thống đang yêu cầu sự cố. Ứng dụng Prefs sẽ làm những gì bạn yêu cầu. – gavinb

+0

@gavinb - đã đồng ý; đề xuất sắp xếp lại. –

1

This article từ osxdaily.com nói bạn chỉ cần gõ:

defaults write com.apple.CrashReporter DialogType none

tại nhà ga. Không biết nếu điều đó sẽ khắc phục sự chậm trễ mặc dù.

1

Cuối cùng tôi đã tìm ra.

trong/System/Library/CoreServices:

 
---------- 1 root wheel 56752 11 Aug 2009 ReportPanic 

Đó hẳn phải là từ nỗ lực trước đây của tôi để vô hiệu hóa hộp thoại báo cáo gây phiền nhiễu. Sống và học hỏi. :]