问题标签 [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.

0 投票
2 回答
639 浏览

c - 当 gdb 不支持操作系统时,使用 gdb 的 Python 回溯不同的操作系统线程

我仍在学习如何在 gdb 中使用 python 调试 C(在我的例子中是 arm-none-eabi-gdb)。我正在尝试使用此工具来获取在 ARM Cortex-M 上运行的实时操作系统的线程信息。阅读一些操作系统结构,我可以访问操作系统线程控制块。我知道每个线程的 PC 和 SP。如何使用 gdb 的 Python 转储线程的回溯。给定 PC 和 SP 时,是否有可以遍历堆栈的通用 API?

我已阅读https://sourceware.org/gdb/current/onlinedocs/gdb/Unwinding-Frames-in-Python.html#Unwinding-Frames-in-Python,我觉得可能有办法实现这一点,但我需要一些帮助。

另外,如果可能的话,我可以让 gdb 了解操作系统的不同线程吗?此链接: https ://sourceware.org/gdb/current/onlinedocs/gdb/Threads-In-Python.html#Threads-In-Python涉及线程但依赖于操作系统信息。这些是否会因我对各自控制块中不同操作系统线程的了解而过载?

谢谢!

0 投票
1 回答
482 浏览

gdb - 使用 GDB Python 脚本跟踪指令

我正在尝试为 GDB 编写一个 Python 脚本来跟踪一个函数。

这个想法是在地址位置设置断点,让程序运行,然后,当它中断时,记录到文件寄存器、向量和堆栈,并找出下一条指令的地址,在该位置设置断点并冲洗并重复。

我通读了文档,我非常有信心可以轻松转储寄存器、向量和内存位置。实际的问题是找到下一条指令的位置,因为它需要分析当前指令的反汇编以确定下一个断点应该放置在哪里。

更新

我没有使用stepinexti因为我正在调试的目标仅适用于硬件断点并且据我所知,这些命令使用软件断点在下一条指令中断

GDB中有类似的东西吗?

0 投票
1 回答
356 浏览

gdb - 有没有办法在 GDB 的 Python API 中(或直接在 GDB 中)获得类型的对齐?

对于我正在编写的漂亮打印机,我想知道容器中使用的对齐方式或类型。不幸的是,使用alignof()或任何类似的“标准”运算符都不起作用(https://sourceware.org/bugzilla/show_bug.cgi?id=17095)。使用直接在源代码中工作的“典型”宏技巧也不起作用:

这有可能吗,或者唯一的方法是让 GDB 在内部支持它?

0 投票
2 回答
539 浏览

c++ - GDB:包含 STL 容器的 Pretty-Print 类

我正在尝试为一个包含 std::set 对象的类编写一个漂亮的打印机,我还为其提供了我自己的漂亮打印机。基本上,这就是我的 C++ 代码的样子:

我希望能够漂亮地打印“FooContainer”类的对象。所以,我想要看起来像这样的漂亮打印机:

但是,尝试这些,GDB 给了我一个错误:

看起来 FooContainerPrinter 只能访问 std::set 的内部成员,并且不能迭代它。我真的很想避免自己遍历 std::set 后面的红黑树。有没有一个巧妙的技巧来实现这一目标?

0 投票
1 回答
332 浏览

gdb - 使用 Gdb Python API 创建新参数

我不知道如何使用 Gdb 中的 Python API 完全定义新参数。我来源的脚本包含以下内容:

我使用以下方法更改并在 Gdb 中显示其值:

Gdb 文档提到Parameter.set_doc,但是当我尝试分配给它时,我得到了异常:

如何添加此文档,或者如何停止打印此“未记录”消息?

0 投票
1 回答
1064 浏览

python - Python multiprocessing.Manager dict 包含值列表

我在进程之间共享一个字典,每个进程在字典中插入一个条目,其中字典中键的值可以是列表或 gdb.Value 实例。每个进程都在做这样的事情

执行上述行时,我收到以下错误,看起来像是因为我正在插入 gdb.Value,如果是 object() 实例,则此方法有效

我也看到了另一个问题,循环遍历字典给了我以下错误

0 投票
0 回答
123 浏览

gdb - 漂亮的印刷吃汉字

我使用了 MinGW 的 gdb-python27.exe。

使用字符串时,汉字显示不正确。

string s1="a的";

最后显示为a,输入的 GDB 命令a在 Eclipse CDT 中也显示为:

0 投票
1 回答
735 浏览

gdb - 如何从字符串返回 gdb.Value()?

考虑以下输出相同文本字符串的 gdb 命令。

在这种情况下,按预期gdb.lookup_symbol()返回一个gdb.Value()实例,并且它的字符串化等效于默认的 gdb 字符串化。

但现在考虑以下等效情况:

*&是一个noop,但尝试使用gdb.lookup_symbol('*&foo')不起作用。所以我的问题是是否可以使用gdb的命令行从python解引用解析器,然后得到agdb.Value作为回报?

0 投票
0 回答
511 浏览

python - 如何将变量传递给 sys.args?(python gdb 脚本)

我想将命令行参数传递给 sys.args (传递给 gdb python 脚本)。我看到了这个解决方案,但想传递任意数量的参数。喜欢:

myScript.py:

有可能吗?

0 投票
0 回答
678 浏览

macos - gdb cannot load Python

I get this warning/error message when launching gdb. It disabled some features. Anyone has a fixed? Thanks.

Could not load the Python gdb module from/usr/local/share/gdb/python'.`