使用python调试器(pdb)时调试cython代码(.pyx) - 最佳实践

时间:2015-10-01 13:12:22

标签: python python-2.7 debugging pycharm cython

我已阅读Cython debugging, put a break pointhttps://groups.google.com/forum/#!topic/apam-python-users/6rsRwcCAms4并想知道在调试从python代码调用的cython代码时最佳工作流程是什么?

理想情况下,我想在从我的IDE(pycharm)启动的python调试会话期间进入.pyx文件,但似乎这是不可能的。当pyx文件被cython化以便调试器可以介入时,是不是可以编译调试信息?

如果无法实现,除了不使用cython之外还有哪些替代方案?

由于这个问题专门询问如何进入cython代码,虽然它与Cython & Python Project Test Driven Development and .pyx file structure advice类似,但它不一样。

2 个答案:

答案 0 :(得分:2)

似乎official way是您的最佳选择。如果有一个简单的替代方案会很棒,但是从你所包含的链接here看来似乎没有。这个wiki文档似乎还有一些官方文档遗漏的额外提示。

答案 1 :(得分:2)

如果你只是使用Cython来提高速度(即不要包装C库),你可以使用pure Python mode,它允许你在一个单独的.pxd文件中定义类型(与你的代码一起存在) .py文件),或使用装饰器。

此模式的优点是您的代码可以在纯Python下运行(并进行调试)。然后,您将离开由于Cython静态类型而不是您的代码而导致的(希望很小的)类错误。缺点是:1)在普通Python下运行代码会比较慢; 2)语法比标准的Cython语法稍微麻烦一些; 3)你不能像这样访问外部C代码,这是Cython的主要用例之一。

没错,你最好的选择是传统的"大量的印刷声明"。 print locals()在这里很有用!但它并不完全令人满意。