【问题标题】:Debugging Python with compiled extensions [closed]使用已编译的扩展调试 Python [关闭]
【发布时间】:2023-03-11 11:12:01
【问题描述】:

我将 Python 与已编译的 Cython 和 Fortran 扩展(使用现代 Fortran 的 iso_c_binding 模块和 Cython 封装)一起用于数字运算。

到目前为止,我还没有一个方便的调试策略。我在 Python 部分使用pudb。虽然我可以在项目的 Cython&Fortran 部分使用 gdb,但我发现自己正在使用控制台文本输出 (print()!)。

我想知道是否有工具可以使不同级别的代码对调试透明,即我正在寻找一种“一个工具-调试-全部”的解决方案,而不关心它是否步骤 Python、Cython 或 Fortran 代码。

我更喜欢允许用户友好交互的工具,例如前面提到的 pudb。这样的万能调试工具是否存在? Python mode of GDB 是我能得到的最好的吗?

【问题讨论】:

  • 抱歉,我没有适合您的解决方案,但我使用 GDB 来完全满足您的描述。我也四处寻找更好的解决方案,但没有运气。

标签: python debugging fortran cython fortran-iso-c-binding


【解决方案1】:

您可以将扩展gdbCython debugger 与以cy 开头的新命令一起使用。这些让您可以单步执行 Cython 代码、设置断点、检查本地变量等,并且当您碰巧在 Python 框架中时,仍然可以像 GDB 的 Python 模式中的 py 命令一样工作。不幸的是,没有 Fortran 支持。

【讨论】:

  • 这是一个很好的开始建议!是否有与cygdb 一起使用的图形前端?我找不到任何东西。另外,我觉得在构建目录中运行cygdb 很奇怪。
  • 您可以尝试ddd --pydb --debugger cygdbddd --gdb --debugger cygdbddd 运行cygdb 并假装它是gdbpydb。不确定您将获得多少功能。
  • 我不熟悉ddd,但至少最基本的功能显然是有效的(只要我不进入系统功能)。通过单击变量,我确实获得了相同的可视化,因此命令行具有附加值。显然,只要使用的 Fortran 例程是用调试符号编译的,那么单步执行 Fortran 代码也是可能的!所以现在我只需要熟悉ddd。谢谢!
  • gdb 了解更多关于前端的信息,我得出的结论是ddd 是我目前最好的选择。 gdbs Python 功能不会暴露给所谓的“机器接口”。因此,支持 Cython 的图形前端需要通过 pty 与 gdb 进行通信。浏览sourceware.org/gdb/wiki/GDB%20Front%20Endsddd 可能是我能得到的最好的(现在)。
【解决方案2】:

您可以尝试免费的 PTVS + 试用 Intel Fortran + 混合模式调试

另见

http://pytools.codeplex.com/wikipage?title=Mixed-mode%20debugging http://pytools.codeplex.com/workitem/1974

【讨论】:

  • 感谢您的提示。不幸的是,我既无法访问 Visual Studio,也无法访问 ifort。
  • 您可以免费获得Visual Studio Express + PVTS
  • 我猜不适合 Linux ;)
  • 对于 Linux,您可以从 PTVS 进行远程调试!
猜你喜欢
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多