2010-02-11 4 views
5

안녕하세요. 저는 Mac OS 10.5에서 C++ 응용 프로그램을 디버깅하는 중입니다. 때때로, 나는 나쁜 것을 할 것이고, segfault 또는 불법적 인 조작을 야기 할 것이다. 그 결과 앱이 잠시 멈추고 결국에는 충돌을 알리는 시스템 대화 상자가 표시됩니다. "정지"와 대화 사이의 대기 시간은 중요합니다. 몇 분. 강제로 응용 프로그램을 종료하거나 명령 행에서 kill -9을 실행하면 아무 일도 일어나지 않습니다. 디버거 (gdb)에서 응용 프로그램을 시작하면 충돌이 발생하면 gdb 프롬프트로 돌아가 프로세스를 완전히 종료 할 수 있습니다. gdb가 느리게로드되므로 이상적이지 않습니다.Mac OS X에서 응용 프로그램 디버깅 및 종료?

어쨌든, 너희들은 뭔가 추천 할 수 있니? OS X에서 크래시보고 메커니즘을 비활성화하는 방법이 있습니까?

감사합니다.

업데이트 1 : 여기에 X 코드 실행에서 남겨진 좀비가 있습니다. 분명히 xcode는 그 중 하나를 올바르게 멈출 수 없습니다.

 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

Xcode를 사용하고 있습니까? 그렇다면 Crash Reporter 대화 상자가 표시되지 않아야합니다. 또한 GUI 기반 응용 프로그램 또는 콘솔 응용 프로그램을 구축하고 있습니까? 편집 : 덧붙여 말하자면 XCode를 사용하는 경우 Xcode에서 GUI 응용 프로그램을 실행하는 동안 EXEC_BAD_ACCESS 오류가 발생하면 중지 아이콘을 눌러 실행중인 응용 프로그램을 즉시 종료 할 수 있습니다. – Tom

+0

그래, 내가 Xcode 또는 gdb 내 애플 리케이션을 실행하면 모든 것이 제대로 작동합니다. segfault가 생기면 앱이 디버거로 돌아가고 모든 것이 훌륭합니다. 그러나 콘솔에서 앱을 실행하면 영원히 멈춘 것처럼 보입니다. – EightyEight

+0

어떻게 앱을 불러내나요?일반적으로 앱이 열심히 게임을 끝내면 프로세스가 종료됩니다. 그러나 다른 환경에서 호출 한 경우 해당 프로세스의 일부 리소스가 열려있을 수 있습니다. 아직 풀어 놓을 수 없으며 부모 프로세스가 먼저 작업을 수행하기를 기다리고 있습니다. 무언가를 감지하는 데 문제가있을 수 있습니다. –

답변

1

은 엑스 코드와 함께 제공되는 CrashReporterPrefs app있다 (스포트 라이트와 함께 검색, /Developer/Applications/Utilities에 있어야합니다). 응용 프로그램의 '예기치 않게 끝내기'대화 상자도 비활성화하려면 서버 모드로 설정할 수 있습니다.

여기 another suggestion입니다 :

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

할, 다시 사용하려면 다음

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

그것은 응용 프로그램이 큰 코어 파일을 덤프되어있을 수 있습니다 - 당신은 아마 효과를 알 것 사용 가능한 디스크 공간에.

sudo sysctl -w kern.coredump=0 

=1으로 다시 활성화하십시오.

defaults write com.apple.CrashReporter DialogType none

을 터미널에서 : osxdaily.com에서

+0

그래, 나는 이미 이것을 시도했다. 대화 상자는 더 이상 팝업되지 않지만 지연은 여전히 ​​있습니다. – EightyEight

+0

'chmod' 접근 방법에 대해서는 조언하지 않겠습니다. 시스템 파일이나 권한을 수정하면 문제가 있는지 묻습니다. Prefs 앱은 사용자가 요청한 것을 처리합니다. – gavinb

+0

@gavinb - 동의 함; 재정렬 된 제안. –

1

This article 방금 ​​입력해야했다. 그게 지연을 해결할 지 모르겠다.

1

나는 그것을 마침내 발견했습니다.

에서/시스템/라이브러리/CoreServices에 : 성가신 보고서 대화 상자를 해제하는 내 이전 시도에서왔다 틀림 없어

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

. 라이브로 배우십시오. :]