模块化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的命令不会。后缀>、<和!分别指定call、return和exception事件。没有后缀时,默认设置为;这是由set different命令设置的。
事件过滤和跟踪
默认情况下,调试器会在每个事件后停止:调用、返回、行、异常、c-调用、c-异常。如果您只想在行事件后停止(这在_pdb_中很常见),您也可以这样做。但如果您只想在调用和返回时停止,这也是可能的。或者选择一些组合。
与默认处理所有事件相结合,当停止时也会显示事件状态。停止的原因也可以通过info program查看。
调用和返回的事件跟踪
我不确定为什么之前没有这样做。可能是因为缺乏设置和移动不同粒度的能力,跟踪调用和返回导致太多的无趣停止(例如在您刚刚所在的地方)。此外,在函数定义上停止可能也增加了这种乏味。
因为我们实际上在处理返回事件,所以我们可以向您显示返回值。(_pdb_有一个“非正式的”_retval_命令,似乎不起作用。)
通过Python Lambda表达式使用调试器宏
在gdb中,有一个宏调试器命令来扩展调试器命令。然而Python有自己的丰富编程语言,所以在这里重新创建gdb中的宏语言似乎很愚蠢。更简单、更强大的是在这里使用Python。这里的调试器宏只是一个返回字符串或字符串列表的lambda表达式。每个返回的字符串都应该是调试器命令。
我们还为极其简单的情况提供了别名,在这种情况下,您想为现有的调试器命令提供一个别名。但请注意:一些命令,如step检查命令后缀并相应地更改其行为。
我们还设想了其他几种方法来允许扩展此调试器,通过附加模块或用户提供的调试器命令目录。
如果您在宏中寻找的是对调试器有更多前端控制,那么请考虑使用实验性的(但未完成)Bullwinkle协议。
字节码指令内省
我们在查看字节码方面做得更多,以提供更好的信息。通过这种方式,我们可以提供:*一个跳过命令。它类似于跳转命令,但您不必处理行号。*代码片段的反汇编。现在您可以相对于您当前停止的堆栈帧进行反汇编。*更好地解释在execfile或exec内部的位置。(但真正的是,这可能是Python编译器的错误功能。)*检查断点是否只设置在合理的地方。*更准确地确定您是否在定义函数的def语句处(因为调用指令包含MAKE_FUNCTION。)
调试器命令参数可以是变量和表达式
像up、list或disassemble这样的接受整数参数的命令允许您使用一个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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 348834296b1bcb157dfc395dbdc9bfd87e878bf5fde57e3622f1b9f5fc5d54c6 |
|
MD5 | 6ae8ce3f8ccc19a027374b1a5405273a |
|
BLAKE2b-256 | 53306af22f88446181b961df5118cad8435afcc2fd20988a4284b42ff0e0209b |
pydbgr-0.2.6-py2.7.egg 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ada89c0c1559ccb122d7a1c278ccf559e53ba96126dabaef2ca37f401e57987d |
|
MD5 | 59b4a237f7d4262bb2574da2b00f11eb |
|
BLAKE2b-256 | 3bec5da1dac7ba484996cdc579ac8ebe4a7ad4367eaeed4edeadc4ad830985f8 |
pydbgr-0.2.6-py2.6.egg 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2c5a69883896b4846e5ec665dface9648c3263710e70da43f07f53f0727de3a |
|
MD5 | caf50c29347abf49c2da214a5175402d |
|
BLAKE2b-256 | f4535ff6188db0f78f53318219adbfb6ecf2eb87021da578cf02295cdb85b909 |