0

我有一个 Visual Studio 2012 解决方案,其中包含多个项目,一些在 C 中,一些在 Fortran 中(使用 Intel Composer XE 2013)。我经常使用 iso_c_binding 实用程序从 Fortran 代码调用 C 代码,但我注意到我无法有效地调试 C 代码。在调试 Fortran 代码时,我可以很好地查看变量的内容,但是如果我进入 C 代码,它们会突然失去理智。大多数变量只是声称未定义;传递给函数的任何内容都将包含不正确的值(但它仍然区分指针和对象/POD)。

我仍然可以单步执行代码;它似乎主要遵循预期的执行顺序,但有时它确实会跳动一点,这是我在使用 gdb 在 Linux 上调试编译器优化代码时所熟悉的。

我有一个单独的解决方案,它也有 C 和 Fortran 项目。两者都从第一个解决方案调用到同一个 C 项目,在这两种情况下,我都可以再次成功调试,直到我从第一个解决方案进入 C 项目,此时我遇到了同样的问题。

我究竟做错了什么?

4

1 回答 1

2

这是用于调试已优化代码的标准 bat 信号。您需要重新安排构建设置,以便您的 Fortran 代码链接到 C 代码的非优化调试构建。

您的问题中没有关于首先是如何出错的问题。首先检查哪个库链接到您的 Fortran 程序,并确保您可以在调试和发布版本中看到为您的 C 项目生成的不同库。您需要链接由 Debug 构建创建的那个。

于 2013-10-10T00:48:37.240 回答