2010-09-27 36 views

回答

2

之前,你可以使用GDB的反向调试,你必须告诉它来记录你的程序的执行(因此它可以回放)通过target record命令,如记录here

我不知道这会帮助你,尽管调试Django应用程序 - GDB是非常适合调试“原生”的代码(编译C/C++),并且是适合用来做调试“解释”的代码(任正向或反向)。

0

这是一个非常好的问题。

我的第一个冲动是确保我使用IPython作为我的django的shell,并且看看在这种情况下是否支持pdb。 Pdb应该有一个非常类似gdb的接口。我记得,gdb是用来调试C/C++程序的,而Django则是由python解释器执行的。使用PDB是在这里:

http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-debugging-series-/

你也可能要使用Django的扩展,用于访问WERKZEUG调试视图尝试。

+1

gdb最近获得了在源代码级别调试Python程序的能力。至少,Fedora发布的gdb可以做到这一点。我没有对自己进行测试,因为我倾向于不喜欢调试器。这与gdb如何知道STL字符串或向量的外观是相似的,所以它可以很好地将它打印出来。它知道你已经连接到一个Python解释器,除了调试解释器外,它还可以调试解释器正在运行的程序。 – Omnifarious 2010-09-27 11:51:13

1

RevDB

https://bitbucket.org/pypy/revdb

https://morepypy.blogspot.co.uk/2016/07/reverse-debugging-for-python.html

该项目旨在让pdb般的逆转调试,这很可能是你想要的,除非你正在调试的Python解释器本身。

它仍处于2017年初期阶段,您必须从源代码构建。

如何质疑并没有提及GDB:Is it possible to step backwards in pdb?

最后,GDB调试逆转是相当不成熟的,例如不处理AVX扩展Disable AVX-optimized functions in glibc (LD_HWCAP_MASK, /etc/ld.so.nohwcap) for valgrind & gdb record,所以我强烈建议使用rr代替:https://github.com/mozilla/rr(RevDB声称从中获得灵感)。

相关问题