trepan家族中类似gdb的python调试器

trepan2的Python项目详细描述


|构建状态许可证支持的python版本

…内容::本地:

abstract
==


这是一个类似gdb的python调试器。它是对从
开始的*pdb*的重写。


提供了命令行接口(cli)以及通过tcp/ip的远程访问接口。

有关如何使用,请参阅教程。请参阅ipython-trepan,了解如何在*ipython*或*ipython笔记本中使用此

此软件包适用于python 2.6和2.7。请参阅trepan3k,以获取修改后与python 3一起使用的相同代码。
对于2.4之前的python,请使用pydb。


功能
==


,因为此调试器与其他的trepaning调试器和*gdb*
基本相似,通过学习这一点获得的知识可以传递给那些
调试器,反之亦然。


这里有很多很酷的东西没有库存
python debugger*pdb*



行的粒度。为了获得更精确的信息,我们可以(de)将字节码
解析为python,字节码的偏移量大约是字节码的偏移量,比如你停下来的位置。没有其他的调试器可以做到这一点。



调试python字节码(没有可用的源代码)
---------------------------


您可以多次向调试器传递python字节码的名称,
调试器将愉快地继续。这个调试器非常努力地查找源代码。使用当前的可执行搜索路径
(例如"path"),或者在字节码中查找主代码对象(`co_filename`)中的
文件名,并使用搜索路径应用
,该路径考虑到
字节码所在的目录。

以这种方式查找源代码,在其他无法找到源代码的情况下,调试器将反编译字节码
,并将其用于显示源代码测试。*这允许我们调试"eval"d
或"exec"d代码。*

有关详细信息,请参阅set_substitute_u命令。



使用该选项,您可以设置pygments的颜色样式,例如"彩色"、"半暗"。请参阅设置样式。此外,我们在调试器输出中使用终端粗体和强调文本的
,并帮助
文本。当然,你也可以关掉这个。从release
0.6.0开始,只要您有支持256色的
终端,就可以使用您自己的pygments\u样式。如果您的终端仅支持基本的
ANSI颜色序列,我们也支持暗和光
主题。



命令完成不仅仅是一个简单的静态列表,而是根据上下文而变化。例如,对于采用可选数字的帧更改命令
,在*有效数字*列表中考虑


如果它改变了,或者您想调整它,请参见设置宽度


smart eval
——


0.2.0版开始,如果您想在代码中运行当前的源代码行之前对其求值,请使用"eval"或"deval"。要对行的公共片段(如*if*语句的
表达式部分)的文本求值,可以使用
``eval?``或者"德瓦尔"?''.有关详细信息,请参见eval。

有时是大的步进。

这个基本问题有两种处理方式:

step granularity



加后缀的命令强制
在下一个停止时使用不同的行,而带破折号后缀的命令则不使用。``分别指定"call"、"return"和"exception"事件。如果没有后缀,则默认为
;这是由"set different"命令设置的。

documentation
----


documentation:http://python2 trepan.readthedocs.org



``行`,``异常`,`` C调用`,`` C异常`。如果你只想让
停在"line"事件(这在很大程度上是在
*pdb*中发生的)上,你可以。不过,如果您只想在呼叫时停止并返回,也可以这样做。或者选择一些组合。


默认情况下,与处理*所有*事件一起,事件状态在停止时显示。停止的原因也可以通过"info program"找到。

可能是因为
缺乏按不同粒度设置和移动的能力,
跟踪调用和返回会导致太多无趣的停止(例如
与您刚才所处的位置相同)。此外,在函数
上停止定义可能也会增加此繁琐工作。

因为我们确实在处理返回事件,所以可以向您显示返回值。(*pdb*有一个"未记录的"*retval*命令,似乎不起作用。)


在*gdb*中,
有一个*macro*调试器命令来扩展调试器命令。


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


我们还有*别名*用于非常简单的情况,即
希望为现有调试器命令提供别名。但是要注意:
一些命令,比如step_inspect command suffix,并相应地更改它们的
行为。

或者用户提供的调试器
命令目录。

然后考虑使用实验性的(未完成的)bullwinkle协议。

通过这个我们可以提供:

*a*skip*命令。它类似于*jump*命令,但不必处理行号。
*代码片段的反汇编。现在可以相对于当前停止的堆栈帧进行反汇编。
*更好地解释在*execfile*或*exec*中的位置。(但实际上这可能是python编译器的一个错误特性。)
*检查断点是否只在它们有意义的地方设置。
*更准确地确定是否在函数定义的*def*语句中(因为调用方指令包含"make_function`.)

在不使用上述"deparsing"的情况下,按行号范围或字节偏移范围进行反汇编的功能可以让您准确地知道自己的位置和代码的getting run.


某些调试器命令参数可以是变量和表达式
——或计算为整数的全局变量。这就消除了
在*gdb*中需要特殊的"美元"调试器变量。(但是请注意
由于*shlex*解析,表达式不能有嵌入的空格。)


进程外调试
----


您现在可以在不同进程中调试程序,甚至在不同网络上的不同计算机上调试程序!

egg、wheel和tarballs
——


可以通过常用的*pip*或*easy_install*安装。有一个
源tarball。`如何安装
<;https://python2 trepan.readthedocs.io/en/latest/install.html>;``有
完整的说明,可以从git或其他方式安装。

您可以有多个调试器对象。

下面列出的许多事情不会直接影响最终用户,但最终会通过更健壮和功能更丰富的代码实现。让开发人员高兴是件好事。(tm)命令和子命令现在是单独的类,而不是类中的方法。这意味着它们现在有了一些属性,比如可以在其中运行它们的上下文、最小缩写名或别名。要添加新命令,基本上是在目录中添加一个文件。
*i/o是它自己的层。这简化了通过TCP套接字读取命令的交互读行行为。
*接口是它自己的层。本地调试、远程调试、从文件(`source`)运行调试器命令是不同的接口。例如,这意味着,如果调试器命令文件有错误,我们可以提供更好的错误报告。
*有一个实验性的python友好界面,用于前端
*更易于测试。更多的单元和功能测试。最终将添加更多的*pydb*集成测试。

使用
*https://pypi.python.org/pypi/uncompyle6:python反编译程序
*https://pypi.python.org/pypi/xdis:cross-platform反汇编程序



。_ pygments:http://pygments.org
。_ pygments样式:http://pygments.org/docs/styles/
…_ pydb:http://bashdb.sf.net/pydb
。_ trepan3k:https://pypi.python.org/pypi/trepan3k
。_ pydbgr:https://pypi.python.org/pypi/pydbgr
。_其他:https://www.npmjs.com/package/trepanjs
…_开孔:https://rubygems.org/gems/trepanning
…_调试器:https://metapan.org/pod/devel::trepan
…_这是:http://bashdb.sourceforge.net/pydb/features.html
。_教程:http://python2 trepan.readthedocs.io/en/latest/entry-exit.html
。|下载图像::https://img.shields.io/pypi/dd/trepan.svg
:目标:https://pypi.python.org/pypi/trepan
:alt:daily pypi downloads
…|构建状态图像::https://api.travis ci.org/rocky/python2 trepan.svg
:目标:https://travis ci.org/rocky/python2 trepan
:alt:circleci build status
。_ ipython-trepan:https://github.com/rocky/ipython-trepan
。|许可证图像::https://img.shields.io/pypi/l/trepan2.svg
:目标:https://pypi.python.org/pypi/trepan2
:alt:license
…_设置替换:https://python2 trepan.readthedocs.org/en/latest/commands/set/substitute.html
。_设置样式:https://python2 trepan.readthedocs.org/en/latest/commands/set/style.html
。_设置宽度:https://python2 trepan.readthedocs.org/en/latest/commands/set/width.html
。_评估:https://python2-trepan.readthedocs.org/en/最新的/commands/data/eval.html
…_步骤:https://python2 trepan.readthedocs.org/en/latest/commands/running/step.html
。_安装:http://python2 trepan.readthedocs.org/en/latest/install.html
。|支持的python版本image::https://img.shields.io/pypi/pyversions/trepan2.svg

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类