使用C互操作性时无法看到断点

时间:2015-12-28 17:18:57

标签: c fortran breakpoints fortran-iso-c-binding

我正在尝试使用Fortran程序调试用C编写的静态库,并使用Fortran的C互操作性进行链接。我在Windows上使用Visual Studio 2013.

但是,在C中插入断点并构建新的.lib文件并将其链接到主程序时,Fortran应用程序不会看到断点。这是一个简单的例子:

静态库中的C代码:

program test
use, intrinsic :: iso_c_binding
implicit none

interface
subroutine f() bind (C)
use, intrinsic :: iso_c_binding
end subroutine f
end interface

call f
pause
end program test

Fortran代码:

{{1}}

.lib文件是在调试模式下创建的,Fortran代码也在调试模式下运行。知道我做错了什么吗?

(请注意,上面的示例仅供参考,而不是我尝试调试的实际代码)

1 个答案:

答案 0 :(得分:0)

因此.lib文件需要生成.pdb代码。默认的Visual Studio行为创建了这些名为vcxx.pdb的文件,可以被后续版本覆盖。这可以在.lib构建中重新命名。

一旦代码绑定到.dll,DLL就需要调试信息可用。这是.dll构建过程的一部分。

最后,如果所有这些都已修复,并且断点仍然无法工作,那么在代码中插入一个DebugBreak()来强制调试器中断。