2013-07-31 29 views
5

私はXamarin.IOSを使って最初の実際のアプリを開発しています。時間のほとんどは、このアプリは素晴らしい作品が、それは、次のスタックトレースでクラッシュ1日に数回:Xamarin.iOSアプリでSIGSEGVの原因を調べる

mono-rt: Stacktrace: 
mono-rt: at <unknown> <0xffffffff> 
mono-rt: at (wrapper managed-to-native) MonoTouch.Foundation.NSObject.monotouch_release_managed_ref (intptr) <IL 0x00023, 0xffffffff> 
mono-rt: at MonoTouch.Foundation.NSObject.ReleaseManagedRef() [0x00000] in /Developer/MonoTouch/Source/monotouch/src/Foundation/NSObject.cs:98 
mono-rt: at MonoTouch.Foundation.NSObject/NSObject_Disposer.Drain (MonoTouch.Foundation.NSObject) [0x00062] in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSObject2.cs:545 
mono-rt: at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> 
mono-rt: at <unknown> <0xffffffff> 
mono-rt: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff> 
mono-rt: at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38 
mono-rt: at Diet52App.Application.Main (string[]) [0x00008] in /Users/danielnordmark/Projects/Diet52App/Diet52App/Main.cs:16 
mono-rt: at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> 

mono-rt: 
Native stacktrace: 


mono-rt: 
================================================================= 
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. 
================================================================= 

私の推測では、いくつかのオブジェクトが、私はそれを使用しようとしているの前に収集したゴミを取得するということです。しかし、私はコードがいつどこで発生しているかを知る方法が少し失われてしまったと感じています。

問題の場所を知る方法はありますか?どんな助けでも大歓迎です!

答えて

4

問題は私のUITableViewControllerに関連しているように思えました。基本クラスと2つの異なるインスタンスがありました。これらの2つの間の競合により、SIGSEGVエラーが発生しました。

私は、私がしなければならなかった唯一の変更は、このようなInvokeOnMainThreadでコードをラップした問題を追跡するため

更新この回答のおかげでhttps://stackoverflow.com/a/6769885/248905

管理:私は後に私の解決策を更新 を私はXamarinのRolfと連絡を取りましたが、Disposeの代わりにViewDidDissapearにコードを挿入するのが正しい修正です。

public override void ViewDidDisappear (bool animated) 
{ 
    searchController.SearchResultsSource = null; 
    searchController.Delegate = null; 
    base.ViewDidDisappear (animated); 
} 
関連する問題