一个用于学习者的python调试器,它打印出所有更改。

pdbg-bcit的Python项目详细描述


pdbg.py

目录

简介

pdbg是python的调试工具。它被设计成一个简单而轻量级的工具,用于解决python代码中的错误。

运行时,此工具将运行指定的脚本,同时在运行期间输出所有变量定义。当您希望在代码执行期间监视对变量所做的更改,并且您没有带调试器的IDE时,这非常有用。这也很有用,即使您有一个调试器,do时,因为许多调试器不允许您返回到代码中以前的步骤,从而很容易忘记以前的值是什么。此工具将在命令行输出或文件中同时显示所有更改,这意味着忘记发生的事情永远不会成为问题。

此模块的所有功能都是通过单个功能提供的。此函数的选项在本文档的Options部分中有详细说明

安装

您可以使用pip

安装pdbg
pip install pdbg-bcit

用法

使用这个工具很简单。在windows中,打开通常运行python脚本的文件夹中的cmd。然后,输入下面的命令,$filepath作为要调试的python脚本的绝对路径。

python -c "import pdbg; pdbg.pdbg(r'$filepath')"

此方法将运行脚本并输出目标文件中的所有变量定义和更改。有关此方法的更多选项,请参见options

示例

假设我们有一个包含以下代码的文件。

deffoo():bar=0foriinrange(3):bar+=1print(bar)foo()

如果我们想查看在foo()中更改的变量,我们只需打开命令行并运行此命令,并将$filepath作为python文件的路径。

python -c "import pdbg; pdbg.pdbg(r'$filepath', ['foo'])"

这就是我们的输出:

[Function] Entering function foo
[Debug]     bar = 0                                                  bar { None => 0 }
[Debug]     for i in range(3):                                       i { None => 0 }
[Debug]         bar += 1                                             bar { 0 => 1 }
[Debug]     for i in range(3):                                       i { 0 => 1 }
[Debug]         bar += 1                                             bar { 1 => 2 }
[Debug]     for i in range(3):                                       i { 1 => 2 }
[Debug]         bar += 1                                             bar { 2 => 3 }
3

选项

pdbg.^{1}1}$pdbg{1}{1}$func滤波器{em1}$func滤波器=[],var滤波器=[]out}$outpufile=noneseperator“,”outpupu-file=none,^{{em1}$eem>,em1}$outpu-file=none,^{{{{em1}$seper1}$eem>,“,^{{em1}{em值}}“)

  • [必需]file
    • python脚本的路径。
  • func_filter
    • 按函数名筛选输出。
  • var_filter
    • 按变量名筛选输出。
  • output_file
    • 默认为无。将pdbg的输出重定向到指定的文件。将通过在控制台中打印输出,否则
  • separator
    • 在一行中更改多个变量时使用的分隔符。
  • output_format
    • 格式化输出的字符串
    • {var_name}将是变量的名称,
    • {pre-value}将是初始变量
    • {new_value}将是更改后的变量。
  • 阅读the Python doc了解有关格式化的更多信息。

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

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名