我有一个用f2py和intelfortran+visualstudio编译成Python扩展的Fortran代码。该代码有一个完整的测试套件和五年的历史。然而,最近我一直在新机器上使用它,而且它的扩展使Python崩溃了。崩溃是否会发生取决于Python中的import order和print语句,因此我怀疑是某种内存或堆栈问题。在
如果我只是在编译语言中工作,那么如果我使用完全优化编译,但是构建符号,并且启用运行时数组边界检查,那么通常会获得足够信息量的跟踪。在
这个组合在f2py中可能吗?我该怎么做?在
我的目录结构如下所示:
.
+-- setup.py
+-- lib
| + hcclib.lib
| + hcc.pyf
| + hcc.for
+-- pyhcc
| + __init__.py
| + pyhcc.py
还有我的设置.py看起来像这样:
^{pr2}$接口由pyhcc.py,它执行参数检查并调用\u hcc中的扩展函数。在
当我编译扩展时,fortran会调用fortran编译器(ifort),而c++则会调用c++编译器(cl)。我添加了ExtryCorpILIGARG(如彼埃尔建议的),但是发现我需要把所给的标志传递给C++和FORTRAN,所以使用ExtryCopielyARG来处理C和ExtFuxF77编译CARILIGARG或Exforf9090CorpILIGARGARS FORTRAN(它被处理。基于构建的f2py部分的消息,这些标志似乎被使用了。在
当崩溃发生时,命令行上没有消息。我收到一个消息框,其中提供在visualstudio中进行调试,但是当我说是时,调试器说没有符号。我不知道这是不是真的。有没有方法可以验证符号是否存在于静态库中肝细胞癌.lib或者输出pyd文件?否则我该怎么做?坠机本身似乎是一个错误。我可以捕捉它并用python中的faulthandler标识例程,但这还不够缩小范围。在
目前没有回答
相关问题 更多 >
编程相关推荐