系统进程调试和分析库。

pointbreak的Python项目详细描述


断点

pointbreak允许您编写调试或分析其他程序的python程序。它的工作方式类似于调试器,但因为它是一个python库,所以您可以很容易地对其进行扩展和交互。

pointbreak的设计目的是使调试和分析复杂的东西(如jits)变得更简单,而无需向目标添加大量调试代码。

一般优势

  • 断点是任何可调用的python
  • 简单的API
  • 可以从类似ipython的python repl中使用
  • 可以很容易地嵌入到其他东西中,例如烧瓶应用程序
  • 易于添加对自定义符号和jit生成代码的支持
  • 比gdb python api更简单,限制更少

缺点

示例打印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()

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

推荐PyPI第三方库


热门话题
java为游戏添加声音。需要帮助   java在获取数据时忽略模型类中的forign键映射   java为什么Microsoft JDBC驱动程序忽略failoverPartner主机名   java可以下载mozswing文件   java等价于ObjectOutputStream,不仅保存其状态,还保存整个对象?   Java Android LiveData根据其他LiveData调用房间查询   java如何使用jackson jsonNode实现这一点并获得所需的输出   在web服务器上作为web应用程序运行java应用程序?   groovy中java类的元类属性   返回空指针的java图形对象   标头中包含用户名和密码的java SOAP客户端请求   具有堆栈实现和递归的Hanoi算法塔(Java)   java当我运行这两个类时,我的老鼠不会移动   使用图像进行java相似图像搜索   Java8并行流机制   使用单例对象作为枚举元素的java Scala枚举,是否有可能对它们进行迭代?   java Webview更改高度大小   不可序列化对象和函数的java Spark Scala编程   java my app在eclipse中运行良好,而不是在jar中