跳转到主要内容

模块化Python调试器

项目描述

摘要

Python 2的gdb样式的调试器。

这是Python 2.4到2.7。对于Python 3.2到3.3,请使用trepan:<http://code.google.com/p/pydbgr>

提供了一个命令行界面(CLI)。

查看_Tutorial:<http://code.google.com/p/pydbgr/wiki/Tutorial 了解如何使用。

功能

这里有很多酷炫的功能,在pydb或标准Python调试器pdb中都没有。

源代码语法着色

终端源代码已着色,我们在调试器输出和帮助文本中使用了终端粗体和强调文本。当然,您也可以将其关闭。

智能评估

如果您想在代码运行之前评估当前源代码行,请使用eval。要评估行中常见片段的文本,例如if语句的表达式部分,您可以使用eval?。有关更多信息,请参阅eval的帮助。

更好的步进精度

有时您需要小步,有时需要大步。

这个问题以几种方式处理

步进精度

现在有step 事件next 事件命令,以及到s+s>等的别名。后缀为plus的命令会在后续停止时强制不同的行,后缀为dash的命令不会。后缀><!分别指定callreturnexception事件。没有后缀时,默认设置为;这是由set different命令设置的。

事件过滤和跟踪

默认情况下,调试器会在每个事件后停止:调用返回异常c-调用c-异常。如果您只想在事件后停止(这在_pdb_中很常见),您也可以这样做。但如果您只想在调用和返回时停止,这也是可能的。或者选择一些组合。

与默认处理所有事件相结合,当停止时也会显示事件状态。停止的原因也可以通过info program查看。

调用和返回的事件跟踪

我不确定为什么之前没有这样做。可能是因为缺乏设置和移动不同粒度的能力,跟踪调用和返回导致太多的无趣停止(例如在您刚刚所在的地方)。此外,在函数定义上停止可能也增加了这种乏味。

因为我们实际上在处理返回事件,所以我们可以向您显示返回值。(_pdb_有一个“非正式的”_retval_命令,似乎不起作用。)

通过Python Lambda表达式使用调试器宏

gdb中,有一个调试器命令来扩展调试器命令。然而Python有自己的丰富编程语言,所以在这里重新创建gdb中的宏语言似乎很愚蠢。更简单、更强大的是在这里使用Python。这里的调试器宏只是一个返回字符串或字符串列表的lambda表达式。每个返回的字符串都应该是调试器命令。

我们还为极其简单的情况提供了别名,在这种情况下,您想为现有的调试器命令提供一个别名。但请注意:一些命令,如step检查命令后缀并相应地更改其行为。

我们还设想了其他几种方法来允许扩展此调试器,通过附加模块或用户提供的调试器命令目录。

如果您在宏中寻找的是对调试器有更多前端控制,那么请考虑使用实验性的(但未完成)Bullwinkle协议。

字节码指令内省

我们在查看字节码方面做得更多,以提供更好的信息。通过这种方式,我们可以提供:*一个跳过命令。它类似于跳转命令,但您不必处理行号。*代码片段的反汇编。现在您可以相对于您当前停止的堆栈帧进行反汇编。*更好地解释在execfile或exec内部的位置。(但真正的是,这可能是Python编译器的错误功能。)*检查断点是否只设置在合理的地方。*更准确地确定您是否在定义函数的def语句处(因为调用指令包含MAKE_FUNCTION。)

调试器命令参数可以是变量和表达式

uplistdisassemble这样的接受整数参数的命令允许您使用一个Python表达式,该表达式可能包括本地或全局变量,并计算为整数。这消除了在gdb中需要特殊的“美元”调试器变量的需求。(然而请注意,由于_shlex_解析表达式不能包含空格。)

可安装的Egg

还需要我说更多吗?

模块化

调试器与其他跟踪钩子相处得很好。您可以有多个调试器对象。

以下列出的许多内容不会直接影响最终用户,但最终会通过更稳健和功能丰富的代码产生影响。让开发者开心是一件好事。(™)

  • 命令和子命令现在是独立的类,而不是类中的方法。这意味着它们现在具有诸如它们可以运行的上下文、最小缩写名称或别名名称等属性。要添加新命令,您基本上只需在目录中添加一个文件。

  • I/O是其自己的层。这简化了通过TCP套接字读取命令的交互式readline行为。

  • 接口是其自身的层。本地调试、远程调试、从文件(源文件)运行调试器命令是不同的接口。这意味着,例如,如果调试器命令文件有错误,我们能够提供更好的错误报告。

  • 有一个针对前端友好的实验性 Python 接口。

  • 更具可测试性。更多单元和功能测试。更多 _pydb_ 的集成测试最终将被添加。

版权 (C) 2008-2009, 2013 Rocky Bernstein <rocky@gnu.org>

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pydbgr-0.2.6.tar.gz (169.0 kB 查看哈希值)

上传时间

构建分布

pydbgr-0.2.6-py2.7.egg (517.0 kB 查看哈希值)

上传时间

pydbgr-0.2.6-py2.6.egg (518.3 kB 查看哈希值)

上传时间

pydbgr-0.2.6-py2.5.egg (518.8 kB 查看哈希值)

上传时间

pydbgr-0.2.6-py2.4.egg (522.6 kB 查看哈希值)

上传时间

由以下支持