系统进程调试和分析库。
pointbreak的Python项目详细描述
断点
pointbreak允许您编写调试或分析其他程序的python程序。它的工作方式类似于调试器,但因为它是一个python库,所以您可以很容易地对其进行扩展和交互。
pointbreak的设计目的是使调试和分析复杂的东西(如jits)变得更简单,而无需向目标添加大量调试代码。
一般优势
- 断点是任何可调用的python
- 简单的API
- 可以从类似ipython的python repl中使用
- 可以很容易地嵌入到其他东西中,例如烧瓶应用程序
- 易于添加对自定义符号和jit生成代码的支持
- 比gdb python api更简单,限制更少
缺点
- 早期开发
- 缺少许多标准调试器功能
- 其他问题请参见https://github.com/tonysimpson/pointbreak/issues
示例打印boo!调用函数时
如果编译gcc ghost.c -o ghost
并运行./ghost
,就不会发生什么事情
但是如果我们运行python boo_ghost.py
,它会打印
Boo! Boo! Boo! Boo! Boo! Boo! Boo! Boo! Boo!
因为我们的python函数每次都会被调用。 在examples目录中有更多的示例。
ghost.c
/* I'm a silly program that does nothing much on its own. *//* Compile me with "gcc ghost.c -o ghost". */voidthere_is_a_ghost(void){return;}intmain(intargc,char*argv[]){inti;for(i=0;i<10;i++){there_is_a_ghost();}return0;}
boo_ghost.py
from__future__importprint_functionimportpointbreakdefprint_boo(debugger):print("Boo!")returnTruedb=pointbreak.create_debugger('ghost')db.add_breakpoint('there_is_a_ghost',print_boo)db.continue_to_last_event()