objdbg:一款专注于python object的调试器
English version of README here
安装
pip install objdbg
简介
什么?
objdbg是一款专门用于python object的调试器。它可以使你轻松地在交互式的shell中对一个特定的python object进行静态和动态的分析。
等等,什么???
假设存在如下object:
class A():
def __init__(self):
self.s = 1
def __eq__(self):
return False
@staticmethod
def staticadd(b, v):
return b + v
@classmethod
def classadd(self, c, b=1, v=2):
return b + v + c
def add(self, a, b, c, *args, **kargs):
return a + b + c
我们可以使用objdbg对其进行调试,如下:
from objdbg import dbg
dbg(A())
就会弹出如下交互式的shell。
python OBJect DeBuGger (OBJDBG) v0.1
[*] Details of the object (command "objprint"):
<A 0x29f26895190
def add(a, b, c, *args, **kargs),
def classadd(c, b=1, v=2),
.s = 1,
.staticadd = <function staticadd>
objdbg>
可以使用objdbg内置的命令对该object进行调试。
功能
静态
objprint:列出object的所有属性&方法,每次调用dbg()时会自动调用。
func:列出object中内置的所有函数(包括重写过的魔术方法)及其参数。
attr:列出object中的所有属性。
pickle:输出pickle.dumps(obj)并进行base64编码。
obj.{attr}:打印obj对应的属性
dir {obj.xxx}:打印dir(obj.xxx),假如不传参默认dir(obj)
func {funcname} {arg1} {arg2} ......:调用object内的函数,输出返回值。
TODO note:快速列出object中比较值得注意的信息。(eg:被修改的魔术方法)
......
动态
shell:切换到python interactive shell。本地命名空间中含有接受调试的object。
mod_attr {attrname} {new_value}:修改object内的特定属性。支持元组,列表,字典的各种嵌套。
reset:将调试器内的object恢复成一开始传入调试器的object。
retr:停止调试,返回调试器内的object。
exit&quit:停止调试,返回None。
from objdbg import dbg
class A():
def __init__(self):
self.s = 1
def __eq__(self):
return False
@staticmethod
def staticadd(b, v):
return b + v
@classmethod
def classadd(self, c, b=1, v=2):
return b + v + c
def add(self, a, b, c, *args, **kargs):
return a + b + c
n = dbg(A)
# if retr: n == A_that_is_modified_in_debugger
# if exit&quit: n == None
del attr {attrname}:删除object内的特定属性。
del func {funcname}:屏蔽object内的特定方法。
note: 由于python中不能直接从实例中删除方法,所以当你尝试del一个方法时,objdbg会将其定义为None,使其成为notcallable。但是,这个属性不会消失。
TODO mod_func {funcname} {base64_code}:修改&新建object的特定方法(将代码base64编码后传入)。
其他
help:打印帮助信息
version:打印版本信息
协议
objdbg项目基于Apache Lisence 2.0。
bug报告&贡献
如果你在使用objdbg时发现了bug,请在issue中告知我,或者联系lamentxu@163.com。谢谢!
如果你对这个项目感兴趣的话,也欢迎在我的邮箱中联系我。objdbg正处于开发的初期阶段,我非常期待得到你的帮助!
Release files for objdbg 0.1.2.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| objdbg-0.1.2.1.1.tar.gz | 9.1 kB | Details |
Release files / objdbg-0.1.2.1.1.tar.gz
| Download URL | objdbg-0.1.2.1.1.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30c86b537346b9f0a399d2bd6710b3d5d185f451ac65b36571f344822950a2e9
|
|
BLAKE2b-256 checksum How to use checksums |
613d9ae19ce53b3335e63b323ae29a567741be62019fefca936f07f8258a97fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.0
|