2016-06-21 70 views
0

我目前通过使用[DLLImport]将大量的数组传递到fortran子例程。除了我在运行该过程的其他每个时间都收到以下enter image description here异常外,一切外观看起来都正确。如何追踪一个变量的地址在C#

这是我的理解,这意味着我已经损坏了内存中的未受托管的代码。

如何判断c#中的哪个变量位于错误消息中的地址,以便我可以开始缩小损坏内存的位置?即什么c#对象位于@ 0x739c1263?

+2

位于0x739c1263处没有C#对象,该消息表示fortran代码中存在Fortran对象错误。 –

+0

fortran代码运行完成,大部分对象都在c#中实例化并传递给fortran。 – PlTaylor

+0

您的P/Invoke声明可能不正确,并且在将值封装到Fortran库或从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 –