gpt4 book ai didi

c - 使用 C 互操作性时看不到断点

转载 作者:行者123 更新时间:2023-11-30 21:29:06 24 4
gpt4 key购买 nike

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

但是,当在 C 中插入断点并构建新的 .lib 文件并将其链接到主程序时,Fortran 应用程序看不到该断点。为了简单起见,下面是一个示例:

静态库中的C代码:

#include <stdio.h>
void f()
{
printf("Hello from C \n");

printf("Before breake point \n");
printf("At the breake point \n"); // breakpoint is inserted here
printf("After breake point \n");
}

Fortran 代码:

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

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

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

最佳答案

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

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

最后,如果所有这些都已修复,并且断点仍然不起作用,则在代码中插入 DebugBreak() 以强制调试器中断。

关于c - 使用 C 互操作性时看不到断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com