我打来自C代码的fortran 90代码。有一个main()
(在c中)在同一个文件中调用一个包装函数,它调用一个fortran子例程(实际上在liblibrary.a中)。我正在linux上工作。现在,我使用gdb
来调试可执行文件,但它找不到main.c文件。我添加使用gdb - 没有源文件名为<something> - 英特尔编译器
directory /my/working/directory
的工作目录但仍说,没有命名的main.c
如果键入list
内gdb
它显示了我一张Fortran代码文件。如果我输入show language
,它表示当前的源语言是auto; currently c
。
如果我运行可执行文件,然后中断它并查看堆栈,它会显示我正在调用的c函数,但它不会声明源文件,而是声明fortran子函数和函数。
我想调查,如果我正确地将变量从c传递给fortran和向后,我怀疑我不是。
同样的事情发生在idb
,或多或少。当我尝试在main.c中暂停时,它说not found
。我编译Fortran代码与这些标志:
-g -O0 -check bounds -warn all -traceback -align all -align rec8byte
和C代码:
-g -O0 -Wall
所有建议都欢迎。
如果您输入“b 1”(在第一行代码中断),会得到什么结果?你通常会得到'Breakpoint 1 at 0xXXXXXXXX:file main.c,line 1.“你是否? – 2012-01-14 22:44:55
我得到”Breakpoint 1 at 0x404f7f:file eos2_wrapper.f90,line 1.“,这是该子程序包装器的文件名fortran函数 - 所以我们已经在库liblibrary.a – simona 2012-01-14 23:06:24
目录下/ my/working /目录指定了绝对路径,这是绝对路径还是源码目录的相对路径? – 2012-01-14 23:10:07