如何获取使用f2py构建的Python模块的运行时错误信息
编辑3/6:抱歉,这是一个假警报。它现在似乎起作用了。我相信gfortran上的如何获取使用f2py构建的Python模块的运行时错误信息,python,numpy,fortran,f2py,Python,Numpy,Fortran,F2py,编辑3/6:抱歉,这是一个假警报。它现在似乎起作用了。我相信gfortran上的-g标志和--debug capi毕竟足以为GDB(gnu调试器)生成行号。我将做一个简短的回答,总结如何做到这一点,以防它对其他人有帮助(这对我来说是一个学习经验)。但请随时发布更多的答案,以改进这一点。特别是,如果可能的话,我希望能够在不使用GDB的情况下获得行号。 这一定是个常见的问题,但我找不到任何答案。该错误位于Fortran库中(我在下面称之为f2.f90),但它是一个运行时错误,只有在通过Python使
-g
标志和--debug capi
毕竟足以为GDB(gnu调试器)生成行号。我将做一个简短的回答,总结如何做到这一点,以防它对其他人有帮助(这对我来说是一个学习经验)。但请随时发布更多的答案,以改进这一点。特别是,如果可能的话,我希望能够在不使用GDB的情况下获得行号。
这一定是个常见的问题,但我找不到任何答案。该错误位于Fortran库中(我在下面称之为f2.f90),但它是一个运行时错误,只有在通过Python使用代码时才会触发
要让它更明确一点:
gfortran
编译了几个文件:
gfortran -c f1.f90 f2.f90
f2py
生成一个模块:
f2py -c f1.o f2.o -m main main.f90
import main
main.main()
f2.f90时,我经常会出现一些错误,当这种情况发生时,它将在步骤4中崩溃python,并且只给我关闭它的选项。不幸的是,我没有得到关于问题是由f2.f90
中的哪一行引起的信息或任何其他信息
所以,非常简单的问题是,有没有办法让步骤4给我一些关于运行时崩溃的基本信息?主要是行号的问题
我尝试将-g-fbacktrace
添加到gfortran调用中,并将-debug capi
添加到f2py
中,然后使用带有回溯的gdb python
。这看起来有点前途,因为它至少告诉我有问题的文件是f2.f90
,而不是行号。如果我尝试“backtrace full”,它将告诉我没有可用的符号表信息
,这可能是保存行号信息的地方?简而言之,这个标志组合似乎允许gdb在f1.f90
或f2.f90
中生成任何运行时错误的行号:
C:\> gfortran -g -fbacktrace -c f1.f90 f2.f90
C:\> f2py --debug-capi -c -I. f1.o f2.o -m main main.f90
C:\> gdb python
(gdb) run main.py
其中main.py
导入/调用正在使用/调用f1.f90
和f2.f90
的main.f90
。然后可以进行回溯以获取一些附加信息
(gdb) backtrace
你能显示你现在收到的错误信息吗?您是否尝试过使用-fcheck=all
(可能会影响性能)进行编译?我现在不在工作计算机旁,因此现在无法进行编译,但稍后将进行编译。我认为这是一个错误。但要明确的是,我并不真正关心这个具体的错误。我知道这是一个运行时错误,导致b/c我还没有加载数据。我只关心如何获得运行时错误的行号。