2011-02-09 10 views
0

これは長いショットかもしれませんが、私はアイデアがありません。外部コンストラクタを呼び出すときにアプリケーションがハングする - トラブルシューティングの手順?

私は3つのプロジェクトでVS C#ソリューションを持っています。クラスライブラリプロジェクトとそのクラスライブラリに依存する2つのアプリケーションプロジェクトがあります。クラスライブラリは、sharpdevelopプロジェクトからのavalonedit dllを含む他のいくつかのDLLに依存します。

アプリケーションの1つは、avaloneditコントロールをラップする自分自身のコントロールの使用を含めて、うまく構築して実行しています。他のアプリケーションが実行に失敗していると、avaloneditコントロールがラップコントロール内のXAMLで初期化された時点で失敗しているようです。

問題は、デバッグ出力に何のエラーも表示されないことです。すべて表示されるのは、dllでロードされたメッセージです。コントロールのコンストラクタに入ると、ステップは完了しません。デバッガは、アプリケーションが実行されていると言いますが、基になるエディットコントロールがXAML側で構築されている場合は、avalonedit dllのどこかで回転しているようです。

私は、2つのプロジェクトの環境の違いにいくつかの問題があると推測しなければなりませんが、問題の追跡を進めるにはどうすればいいのか分かりません。どういうわけか、私はavaloneditソースに休憩を入れることができるように問題を整理しなければならないでしょうか?

編集:私が中断/中断すると、すべて私のコントロールコンストラクタを呼び出す行に戻ります。

+0

ハングアップ中にデバッガを一時停止するとどうなりますか? – SLaks

+0

[Reflector](http://www.red-gate.com/products/dotnet-development/reflector/)が便利な場所です! – Mayank

+1

AvalonEditのソース(および/またはPDB)を選んで、デバッガでポーズを打つことで問題を確認することをお勧めします。もう一つのアプローチは、ループの潜在的な原因を見るためにReflector(Mayankが示唆したように)を使ってavaloneditのコンストラクタソースを検査することです。 – VinayC

答えて

1

デッドロックのようなサウンドです。すべてのスレッド、スタックトレース、および同期プリミティブ(ロック、セマフォなど)を詳しく見てください。注意してください:競合リソースは明示的ではありません(たとえば、静的コンストラクターの内部で、構築中の型の静的フィールドにアクセスしようとするものが待機しているときなど)。

デッドロックを導入する方法はたくさんありますが、それを処理するための簡単なアドバイスはありません。また、Visual Studio(Debug - > Exceptions ...およびCLR Exceptionsをチェック)ですべての例外を中断することもできます。

ここでスタックトレースを提供できない場合は、誰かが問題を見つけられる可能性があります。

関連する問題