idb 找不到函数 —有什么提示吗?

发布于 2025-01-05 06:04:32 字数 1273 浏览 0 评论 0原文

我发现 idb 无法进入我的函数之一。

我正在将一个 c 程序 (main.c) 与一个属于模块 (mod1) 的 fortran90 函数 (func1) 链接,该函数链接到另一个模块 (mod2) 中的另一个函数 (func2)。结构就像这样

main.c(c) ---> func1 进入 lib1.a (fortran) 的 mod1 ---> func2 进入 lib2.a (fortran) 的 mod2

*问题是:我无法使用 idb 进入 func2。当我尝试从 func1 进入 func2 时,调试器将转到 func1 中的下一行。我没有使用 gdb,因为我知道它无法进入 fortran 模块,可以吗?

我正在使用 Intel 11.1 进行编译,带有以下标志:

CFLAGS=-ggdb -debug full -O0  -Wall -traceback

F90FLAGS=-g -O0 -check bounds -warn all -traceback -align all -align rec8byte

我不知道该怎么做,任何提示都值得赞赏


编辑:我编写了一个简单的 Fortran 90 程序,该程序直接调用 lib2.a,而不使用 lib1.a。我发现 idb 也无法进入 lib2.a 。

我编译库就像

ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o a.o -c a.f90 -I
ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o b.o -c b.f90 -I
ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o c.o -c c.f90 -I
ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o d.o -c d.f90 -I
/u/shared/programs/x86_64/ifort/11.1.064/bin/intel64/xiar rcvf lib2.a a.o b.o c.o d.o  
xiar: executing 'ar'
a - a.o
a - b.o
a - c.o
a - d.o

我不明白出了什么问题一样,我通常编译这样的库并且调试器可以工作!

有什么想法吗?

I found that idb cannot step into one of my functions.

I am linking a c-program (main.c) with a fortran90 function(func1), that belong to a module(mod1), that links to another function(func2) in another module(mod2). The structure is like that

main.c (c) ---> func1 into mod1 of lib1.a (fortran) ---> func2 into mod2 of lib2.a (fortran)

*The problem is: I am not able to step into func2 with idb. When I try to step in func2 from func1 the debugger goes to the next line in func1. I didn't use gdb because I know that it cannot step into fortran module, can it?

I am compiling with Intel 11.1 with the following flags:

CFLAGS=-ggdb -debug full -O0  -Wall -traceback

F90FLAGS=-g -O0 -check bounds -warn all -traceback -align all -align rec8byte

I don't know what to do, any hint is appreciated


Edit:I
I wrote a simple fortran 90 program that calls directly lib2.a without using lib1.a. I find that idb cannot step into lib2.a either.

I compile the library like

ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o a.o -c a.f90 -I
ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o b.o -c b.f90 -I
ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o c.o -c c.f90 -I
ifort -g -O0 -check bounds -warn all -traceback -align all -align rec8byte -o d.o -c d.f90 -I
/u/shared/programs/x86_64/ifort/11.1.064/bin/intel64/xiar rcvf lib2.a a.o b.o c.o d.o  
xiar: executing 'ar'
a - a.o
a - b.o
a - c.o
a - d.o

I don't understand what is going wrong, I usually compile libraries like that and the debugger works!

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

做个ˇ局外人 2025-01-12 06:04:32

这是我在英特尔论坛上得到的答案:

我正在使用 -I 而不带参数:这是错误的并导致问题。

This is the answer I got on the intel forums:

I am using -I without argument: this is wrong and causes the problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文