2013-10-17 24 views
3

'내 앱'의 모든 충돌에 대해 알고 싶습니다. AppDomain.CurrentDomain.UnhandledException을 사용하면 관리되는 예외를 쉽게 캡처 할 수 있습니다.OS X에서 로깅 런타임이 모노로 깨졌습니다.

종종 관리되지 않는 코드에서 충돌이 발생합니다 (자체 라이브러리와의 상호 작용을 통해 또는 때로는 모노 매크를 잘못 사용하거나 모노맥 자체의 문제로 인해). 나는 언제 이런 일이 일어나는지 알고 싶다.

plcrashreporter 프레임 워크를 바인딩하고이를 내 앱에 추가했습니다. 나는 Xamarin.iOS 응용 프로그램과 함께 크래시 리포터를 사용하여 discussion을 읽었으며 workaround을 구현했습니다.

지금까지 매우 좋았습니다. 크래시 리포터를 사용할 수 있었고 앱이 정상적으로 실행되었습니다. 그러나, 나는 실제로 어떤 신호가 잡히는 지에 제한되어있는 것처럼 보인다.

예를 들어, SIGILLSIGABRT은 모두 크래시 리포터에 의해 트랩됩니다. 충돌 보고서는 디스크에 기록되며 다음에 앱을 시작할 때 다시 읽을 수 있습니다.

그러나 SIGSEGVSIGBUS은 걸리지 않습니다.

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 

을 그래서 Mac의 상황이 정확히 iOS의 상황과 동일하지 않은 것으로 보인다 대신, 나는 함께 콘솔에 기록 스택 트레이스를 얻을. 해결 방법을 사용하면 충돌 리포터를 실행할 수 있지만 Mono는 관리되지 않는 코드에서 SIGSEGV를 가져올 때 SIGABRT를 발생시키지 않는 것 같습니다.

아이디어가 있으십니까?

답변

1
제거하고 SIGSEGVSIGBUS 처리기를 재 할당에 대한 해결 방법 만

우리가 살고 오류에만 관심이 있기 때문에

를 첨부 디버거를 실행하는 응용 프로그램에 필요한

, 우리는에 PLCrashReporter을 가능하게하는 코드를 둘러싸고 있습니다 #IF DEBUG.