私は現在、monoで実行されているac#linuxアプリケーションに取り組んでいます。プログラム内でスローされる可能性のある例外を処理したと思いますが、例外を見逃した場合は、C#アプリケーションがクラッシュしたときにコアダンプファイルを作成して確認できるようにする方法があるかどうか疑問に思いました。例外を調べて、GDBがCプログラムに対して行うような問題の原因を特定しようとします。
アプリケーションにOpenSuse12.1を使用しています。
あなたが提供できるどんな助けにも感謝します。
私は現在、monoで実行されているac#linuxアプリケーションに取り組んでいます。プログラム内でスローされる可能性のある例外を処理したと思いますが、例外を見逃した場合は、C#アプリケーションがクラッシュしたときにコアダンプファイルを作成して確認できるようにする方法があるかどうか疑問に思いました。例外を調べて、GDBがCプログラムに対して行うような問題の原因を特定しようとします。
アプリケーションにOpenSuse12.1を使用しています。
あなたが提供できるどんな助けにも感謝します。
モノラル用のスーパーアサートが必要なようですね。このモノメールスレッドしか見つかりませんでした。マネージドデバッガーからモノラルへの変換の可能性について説明します。残念ながら、Microsoft EULAは、これを移植することを妨げているようです。したがって、オペレーティングシステムを直接使用する必要があるようです。コアダンプをキャプチャする方法に関する公式ガイドは次のとおりです
コアダンプをキャプチャする準備をするには、次の手順を実行する必要があります。
-コアダンプファイルの最大サイズの制限を無効にします-コアダンプ
を保存するための固定の場所を構成します-AppArmorを無効にします
-setuid
およびsetgidプロセスのコアダンプを有効にします
このためのクイックステップガイドは次のとおりです。
走る
ulimit -c unlimited
走る
install -m 1777 -d /var/local/dumps
走る
echo "/var/local/dumps/core.%e.%p"> /proc/sys/kernel/core_pattern
走る
rcapparmor stop
走る
sysctl -w kernel.suid_dumpable=2
問題のあるプロセスを(再)開始します。
このスレッドもご覧ください:Linuxのコアダンプ-アプリがクラッシュする可能性があると思われる場合は、テクニカルサポートヘルパーscript / exeをセットアップして、上記のすべてのアクションを実行し、Monoアプリケーションを起動できます。これにより、エンドユーザーが問題を再現し、問題を診断するためのダンプを送信することが容易になります。
バグバディのソースを確認することをお勧めします。
次のことを見たことがありますか?
はい、できますが、何.NET exception
が起こったのかを知ることしかできません。サードパーティのソフトウェアなしでコアダンプを実行できるかどうかはわかりません。
アプリケーションのタイプに応じて、次のいずれかをフックできますevents
。
あなたが使用する場合、Windows Forms Application
あなたは購読することができますSystem.Windows.Forms.Application.ThreadException
あなたが使用する場合、WPF
あなたは購読することができますSystem.Windows.Threading.Dispatcher UnhandledException
一般的なUnhandledException
イベントをサブスクライブする場合は、サブスクライブできますSystem.AppDomain.UnhandledException
(ただし、アプリケーションに十分なアクセス権がない場合は、このイベントにアクセスできません)。