2016-06-21 4 views
0

現在、[DLLImport]を使用して多数の配列をFortranサブルーチンに渡しています。私が次のプロセスを実行するたびに、次のような例外が出ることを除いて、すべて外向きに正しいように見えます。enter image description hereC#でアドレスを持つ変数を追跡する方法

これは、私が管理されていないコードのどこかでメモリを壊してしまったということです。

どのような変数がC#でエラーメッセージのアドレスにあるのかわかりますので、メモリを破壊する場所を絞り込むことができますか?つまり、どのC#オブジェクトが@ 0x739c1263にありますか?

+2

0x739c1263にはC#オブジェクトがありません。そのメッセージは、FortranオブジェクトにFortranコードにエラーがあったことを意味します。 –

+0

Fortranコードは完了まで実行され、ほとんどのオブジェクトはc#でインスタンス化され、fortranに渡されます。 – PlTaylor

+0

P/Invoke宣言が正しくない可能性があり、値がFortranライブラリとの間でマーシャリングされたときにスタック上に壊れている可能性があります。 –

答えて

0

DebugDiagを使用してください。

メモリスナップショットを作成し、変数をナビゲートすることができます。

+0

これは答えではなく、示唆であるため、OPのコメントとして役立ちます。 –

+0

debugdiagの使用方法にリンクするか、またはその指示を提供できますか? – PlTaylor

+0

ここをクリックhttps://msdn.microsoft.com/en-us/library/ff420662.aspx また、WinDbg http://windbg.info/doc/1-common-cmds.html –

関連する問題