Object debugger in python
Project description
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正处于开发的初期阶段,我非常期待得到你的帮助!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file objdbg-0.1.2.1.1.tar.gz.
File metadata
- Download URL: objdbg-0.1.2.1.1.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30c86b537346b9f0a399d2bd6710b3d5d185f451ac65b36571f344822950a2e9
|
|
| MD5 |
7ec07abbdfeb859685da0d4a91cdaf1a
|
|
| BLAKE2b-256 |
613d9ae19ce53b3335e63b323ae29a567741be62019fefca936f07f8258a97fb
|