4

我正在尝试将 GDB 的反向调试与 Django 应用程序一起使用。我让它在 GDB 中运行,但我不能让它向后运行。

我用 Ctrl-Z 停止了我的 Django 应用程序,然后reverse-next在 gdb 提示符下输入,收到错误消息“目标多线程不支持此命令”。

我做错了吗?这不可能吗?两个都?

4

3 回答 3

2

target record在您可以使用 GDB 进行反向调试之前,您必须告诉它通过命令记录您的程序执行(以便它可以回放) ,如此处所述

我不确定这是否会帮助您调试 Django 应用程序——GDB 非常适合调试“本机”代码(已编译C/C++),但不适合调试“解释”代码(正向或反向)。

于 2010-09-29T03:00:22.287 回答
1

版本数据库

https://bitbucket.org/pypy/revdb

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

该项目旨在允许pdb类似的反向调试,这可能是您想要的,除非您正在调试 Python 解释器本身。

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

如何质疑未提及 GDB:是否可以在 pdb 中倒退?

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

于 2017-09-11T09:37:18.213 回答
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-extensions 来访问 werkzeug 调试视图。

于 2010-09-27T05:26:00.720 回答