6

私は現在、monoで実行されているac#linuxアプリケーションに取り組んでいます。プログラム内でスローされる可能性のある例外を処理したと思いますが、例外を見逃した場合は、C#アプリケーションがクラッシュしたときにコアダンプファイルを作成して確認できるようにする方法があるかどうか疑問に思いました。例外を調べて、GDBがCプログラムに対して行うような問題の原因を特定しようとします。

アプリケーションにOpenSuse12.1を使用しています。

あなたが提供できるどんな助けにも感謝します。

4

4 に答える 4

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アプリケーションを起動できます。これにより、エンドユーザーが問題を再現し、問題を診断するためのダンプを送信することが容易になります。

于 2012-09-02T02:05:44.600 に答える
0

バグバディのソースを確認することをお勧めします。

于 2012-08-21T11:52:56.817 に答える
0

次のことを見たことがありますか?

http://www.mono-project.com/Debugging#Debugging_with_GDB

于 2012-08-29T11:19:02.323 に答える
0

はい、できますが、何.NET exceptionが起こったのかを知ることしかできません。サードパーティのソフトウェアなしでコアダンプを実行できるかどうかはわかりません。

アプリケーションのタイプに応じて、次のいずれかをフックできますevents

  • あなたが使用する場合、Windows Forms Applicationあなたは購読することができますSystem.Windows.Forms.Application.ThreadException

  • あなたが使用する場合、WPFあなたは購読することができますSystem.Windows.Threading.Dispatcher UnhandledException

  • 一般的なUnhandledExceptionイベントをサブスクライブする場合は、サブスクライブできますSystem.AppDomain.UnhandledException(ただし、アプリケーションに十分なアクセス権がない場合は、このイベントにアクセスできません)。

于 2012-08-31T07:12:18.823 に答える