drgn

可编程调试器
授权协议 GPL-3.0
开发语言 C/C++ Python
所属分类 开发工具、 程序调试工具
软件类型 开源软件
地区 不详
投 递 者 蔡弘扬
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

drgn(发音为“dragon”)是一个强调可编程性的调试器。drgn 公开程序中的类型和变量,以便在 Python 中轻松、富有表现力地编写脚本。例如,你可以调试 Linux 内核:

>>> from drgn.helpers.linux import list_for_each_entry
>>> for mod in list_for_each_entry('struct module',
...                                prog['modules'].address_of_(),
...                                'list'):
...    if mod.refcnt.counter > 10:
...        print(mod.name)
...
(char [56])"snd"
(char [56])"evdev"
(char [56])"i915"

尽管 GDB 等其他调试器具有脚本支持,但 drgn 的目标是使脚本编写尽可能自然,使调试感觉就像编码一样。这使得它非常适合在大型程序中内省复杂的、相互关联的状态。它还被设计为一个库,可用于构建调试和自省工具;查看官方工具

drgn 是在 Meta 开发的,用于调试 Linux 内核(作为崩溃实用程序的替代方案),但它也可以调试用 C 编写的用户空间程序。C++ 支持正在进行中。

 相关资料
  • 编译可调试的目标文件 为了使得编译出来的代码是能够被gdb这样的调试器调试,我们需要在使用gcc编译源文件的时候添加参数:"-g"。这样编译出来的目标文件中才会包含可以用于调试器进行调试的相关符号信息。

  • NJS Source Code - https://github.com/nginx-architects/njs-examples Documentation - http://nginx.org/en/docs/njs/ Step By Step Lab - https://clouddocs.f5.com/training/community/nginx/html/class3/class3

  • 编辑器/调试器是用来生成和调试M-文件的,这些M-文件是你为运行MATLAB函数所写的程序。编辑器/调试器为基本文字编辑和M文件的调试提供图形用户界面。 你可以使用任何文档编辑器来生成M-文件,例如Emacs,也可以用参数选择(可从桌面文件菜单得到)来指定默认的编辑器。如果用的是别的编辑器,你仍然可以使用MATLAB的编辑器/调试器来调试,或者使用用来插入断点的调试程序,例如dbstop。 如果仅

  • 问题内容: 我刚刚遇到了一个Codility问题,这给我带来了困难,但我仍在尝试弄清楚如何才能满足空间和时间复杂性的限制。 问题如下:数组中的主要成员是占据数组中一半以上位置的成员,例如: {3,67,23,67,67} 67是主要成员,因为它在数组中以3/5(> 50%)的位置出现。 现在,您将期望提供一种方法,该方法接受一个数组并返回一个占主导地位的成员(如果存在)的索引,如果不存在则返回-1

  • 我的硬币兑换动态编程实现在一些测试用例中失败,我很难找出原因: 问题陈述:给定一个数量和一个硬币列表,找出制造该数量所需的最小硬币数量。 例如: 目标金额:63 硬币列表:[1,5,10,21,25] 输出:[21,21,21] 小装饰品:https://trinket.io/python/43fcff035e

  • 每当我按下应用程序中的登录按钮时,就会出现此错误。有什么建议吗? java.lang.NullPointerExcture:尝试在com.example.android.login.LoginActivity.is空(LoginActivity.java:93)在com.example.android.login.登录ctivity.access0美元(登录ctivity.java:20)在com