我目前通过使用[DLLImport]将大量的数组传递到fortran子例程。除了我在运行该过程的其他每个时间都收到以下异常外,一切外观看起来都正确。如何追踪一个变量的地址在C#
这是我的理解,这意味着我已经损坏了内存中的未受托管的代码。
如何判断c#中的哪个变量位于错误消息中的地址,以便我可以开始缩小损坏内存的位置?即什么c#对象位于@ 0x739c1263?
我目前通过使用[DLLImport]将大量的数组传递到fortran子例程。除了我在运行该过程的其他每个时间都收到以下异常外,一切外观看起来都正确。如何追踪一个变量的地址在C#
这是我的理解,这意味着我已经损坏了内存中的未受托管的代码。
如何判断c#中的哪个变量位于错误消息中的地址,以便我可以开始缩小损坏内存的位置?即什么c#对象位于@ 0x739c1263?
使用DebugDiag。
您可以拍摄快照并浏览变量。
由于这不是一个答案,而是一个建议,所以最好作为OP的评论。 –
您可以链接到或提供有关如何使用debugdiag的说明? – PlTaylor
点击这里https://msdn.microsoft.com/en-us/library/ff420662.aspx 也WinDbg http://windbg.info/doc/1-common-cmds.html –
位于0x739c1263处没有C#对象,该消息表示fortran代码中存在Fortran对象错误。 –
fortran代码运行完成,大部分对象都在c#中实例化并传递给fortran。 – PlTaylor
您的P/Invoke声明可能不正确,并且在将值封装到Fortran库或从Fortran库进行封送时,堆栈上的内容会被损坏。 –