问题标签 [gdb-python]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - 如何编写 gdb 脚本(使用 python)?示例添加断点,运行,我们打的是什么断点?
我正在尝试使用 gdb 创建一个小单元测试,用于由OpenOCD控制的嵌入式 mcu (这使我可以通过 gdb 服务器控制我的目标)。
所以我想用gdb的一些脚本来自动化这个。
我想为 gdb 编写某种或多或少的脚本:
- 添加几个断点
- 启动程序
- 当我们停止时,它在哪里停止(获取帧信息)
- 辞职。
有任何想法吗?
关于如何在 python gdb 脚本中执行此操作的示例会很好。
谢谢约翰
注意:
假设我们有这个基本结构,或多或少进入 test_failed() 或 test_success() 取决于函数 start_test() 返回的内容。
在 gdb 中手动执行此操作非常困难,
因此,我尝试的下一步是将这些 gdb 命令添加到 gdb 启动脚本中,该脚本或多或少看起来像这样。
并开始
而这种作品,但它不是很好。我如何使用 gdb 似乎支持的“新的和酷的”python 脚本来做到这一点。
c++ - 如何在 Eclipse CDT 中为 C++ STL 对象启用 gdb 漂亮打印?
我正在尝试在 eclipse cdt 中为 STL 对象添加漂亮的打印。我尝试按照此处描述的步骤进行操作:
http://sourceware.org/gdb/wiki/STLSupport
我检查了python文件夹,但似乎无法完成...
我创建了一个 gdbinit 并选择了我的调试配置,但是每当我尝试开始调试时,我都会收到以下错误:
如果我尝试在 python shell 中执行 gdbinit 的内容,我会收到以下错误:
似乎我没有这样的模块......我对 Python 没有任何线索,所以我什至不知道 Python 中的“模块”是什么......
有人可以帮我吗?能够看到真实的调试信息对我来说非常重要,或者这样说很有用。或者以某种方式我什至可以从控制台调试并从 gdb 获得很好的输出,因为如果我打印一个字符串,例如我得到无用的输出......
问候,亚历克斯
debugging - CUDA/PyCUDA:诊断在 cuda-gdb 下消失的启动失败
任何人都知道在 cuda-gdb 下运行时消失的内核启动失败的可能调查途径吗?内存分配在规范范围内,每次在同一内核的同一运行中启动都会失败,并且(到目前为止)它在调试器中没有失败。
哦,伟大的大师,现在呢?
gdb - 添加源检测代码 - 源到源编译器是正确的方法吗?如何建造一个?
我正在做一个项目,我需要跟踪任何给定应用程序代码中特定变量集的更改,以对内存访问模式进行建模。
我主要想到了两种方法,请给出您的想法。
- 我最初的想法是像许多像 gprof 这样的分析器那样做,我在编译之前在目标应用程序代码中添加检测代码,并分析此检测代码生成的日志以获取所需的信息。
为此,我只能想到某种源到源编译器,它解析给定的代码并将检测代码(相同语言的源代码编译器)注入应用程序,我以后可以编译和运行以获取所需的日志。
这看起来是对的还是我过度设计了?如果没有,是否有工具可以让我(相对)轻松地构建源代码编译器?
- 我读到了 GDB 对 python 的支持,所以,我在想是否可以编写一个 python 脚本来获取一组变量作为配置文件,并设置观察点并在每次写入被监视的变量时记录。我尝试使用此 GDB 功能,但在我的 Ubuntu 机器上,它现在似乎无法正常工作。 http://sourceware.org/gdb/onlinedocs/gdb/Python.html#Python
而且,应用程序的语言将是 nesC(我猜 nesC 在编译过程中会转换为 C)(并且应用程序将像我计算机上的本机应用程序一样在 TOSSIM 上运行)。
python - gdb python:谁能解释我如何使用这篇文章中写的这个脚本?
如何为ac代码..?可能吗..?我读了这篇文章。我也想做类似的事情,但我无法在链接 GDB-Python 脚本中使用给定的更新脚本:遍历 C/C++ 结构字段的任何示例
我按照以下步骤进行测试:我的源代码名称是:test.c 和 pretty.py
gcc -g test.c
gdb test
(gdb) source pretty.py
(gdb) run
(gdb) print <stcruct object>
如何使用这个脚本?
python - 核心转储:从核心转储中提取所有全局变量、数据结构和子结构
如何使用 gdb-python 从 C 代码崩溃后生成的核心转储中提取所有全局变量、数据结构和子结构(带有地址、类型和值)。?
python - gdb python:如何将 gdb 命令的输出重定向到变量?
我正在使用 RHEL 5.3 操作系统、gdb
7.5 和python
2.7。我正在用 Python 编写一个脚本来自动化一些 gdb 调试步骤。我们可以将以下命令(“name1”)的输出存储到变量中吗?
我想这样做是因为在我的 Python 脚本中,我会将这个 ( name1
) 与用户输入的字符串进行比较,如果匹配,则会执行一些操作,否则会要求用户输入另一个字符串。
如果不可能,请建议我替代方案。
python - gdb-python :解析结构的每个字段并以适当的值打印它们(如果存在)
我正在编写一个 python 脚本来自动从 gdb 调试核心转储。我正在尝试打印包含内核数据结构和列表的数据结构(例如 struct list_head)。例如结构是这样的:
我正在使用以下 API tp 打印此结构:
gdb.execute('p (*(struct my_struct *)dev_base->priv)')
所以我可以自动打印'struct my_struct'、struct my_hardware_context ahw 的内容,但不能打印指针和列表的内容(例如struct net_device *netdev、struct pci_dev *pdev、struct list_head mac_list)(只打印地址)。那么如何使用 gdb-python 脚本打印 *netdev、*pdev 和 mac_list 的内容呢?
编辑:让我的问题更清楚
我正在编写一个 python 脚本来自动从 gdb 调试核心转储。我正在尝试打印包含内核数据结构和列表的数据结构(例如 struct list_head)。例如结构是这样的:
我正在使用以下 API 来打印此结构:(可以假设我有正确的核心转储并添加了正确的符号。
main_struct = gdb.execute('p (*(struct my_struct *)dev_base->priv)')
print main_struct
现在它将打印 struct my_struct 的所有成员的值,但最多打印一级,这意味着它将打印 struct my_hardware_context ahw 的全部内容,因为它是一个实例,但它不会打印 struct net_device *netdev、struct pci_dev *pdev 的内容, struct list_head mac_list 等,所以现在我需要手动执行如下操作:
netdev = gdb.parse_and_eval('*(*(struct my_struct *)dev_base->next->priv).netdev')
print netdev
pdev = gdb.parse_and_eval('*(*(struct my_struct *)dev_base->next->priv).pdev')
print pdev
所以我想自动化这些步骤。是否有任何 gdb-python API 或方法可以迭代 struct my_struct 并自动打印指针、数组和列表值?
谢谢。
gdb - 我可以使用 stdout/stderr 打印输出作为字符串来进行漂亮的打印吗?
我有一个函数dump()
,当在 type 对象上调用时X
,它会打印出对 stderr 有用的东西。
我正在尝试编写一个 GDB 漂亮打印脚本,该脚本利用某些命令的输出返回一个描述值的字符串,类似于以下内容:
不幸的是,这给了我:
警告:当前输出协议不支持重定向
我该如何解决这个问题?这甚至是获得 stderr 输出的正确方法吗?
python - gdb python:如何遍历结构内的内核链表
使用 gdb-python 脚本,我正在尝试打印包括内核数据结构和列表(例如 struct list_head)的数据结构,该结构是
因此,在迭代这个 struct my_struct 时,如何识别这个结构内有一个链表,因为 gdb 手册中没有任何 TYPE_CODE_ 常量用于链表,如果确定,在识别后如何在迭代列表时打印取消引用的结构。我在此链接gdb-python 中使用 scottt 的代码:解析结构的每个字段并以适当的值打印它们(如果存在)