1

Ubuntu 12.04、モノ 2.10.8.1-5

MonoDevelop がデフォルトで作成する「hello world」コンソール アプリを作成しました。期待どおりに実行されます。トレース オプションを追加すると (ファイルに送信されるかどうかに関係なく)、次のような結果が得られます。

[0x7f24da6eb740: 0.00000 0] ENTER: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)([System.OutOfMemoryException:0x7f24da52af60], 0x7fff953e6510, (nil), 0x40e79a70, )
[0x7f24da6eb740: 0.00012 1] ENTER: System.OutOfMemoryException:.ctor (string)(this:0x7f24da52af60[System.OutOfMemoryException monotracetest.exe], [STRING:0x7f24da551e70:Out of memory], )
[0x7f24da6eb740: 0.00021 2] ENTER: System.SystemException:.ctor (string)(this:0x7f24da52af60[System.OutOfMemoryException monotracetest.exe], [STRING:0x7f24da551e70:Out of memory], )
[0x7f24da6eb740: 0.00030 3] ENTER: System.Exception:.ctor (string)(this:0x7f24da52af60[System.OutOfMemoryException monotracetest.exe], [STRING:0x7f24da551e70:Out of memory], )
[0x7f24da6eb740: 0.00031 3] LEAVE: System.Exception:.ctor (string)

..スタック オーバーフロー、メモリ不足、およびより無害に見えるものについて、ほぼ 900 行にわたって続いています。

「--help-trace」以外のトレース オプションに関するドキュメントは見つかりませんでした。私は何を期待すべきですか?これは実際に問題を報告していますか? 「console.writeline("hello world")」を try catch ブロックでラップすると、例外はスローされません。(もちろん、未処理の例外が原因でプログラムがクラッシュした可能性があります。)

私の元のプログラムは、ネイティブ コードのライブラリの呼び出しをテストすることでしたが、失敗した場所を確認するためにこれに縮小しました。

もみ殻から小麦を分離するにはどうすればよいですか?

4

1 に答える 1

3

これが予想される出力です。例外はスローされませんが、ランタイムは起動時にいくつかのオブジェクトを作成する必要があります (たとえば、OutOfMemory 例外オブジェクト: 条件が発生すると、それを割り当てるためのメモリがなくなる可能性があります!)。

出力の削減に関して、--help-trace で不明な点はありますか? たとえば、System.IO 名前空間のクラスとメソッドのみのトレースを取得する場合は、次を発行します。

mono --trace=N:System.IO program.exe

于 2012-08-24T07:07:37.103 に答える