问题标签 [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 投票
1 回答
428 浏览

gdb - 从 python 脚本调用 gdb print

我有一个 python gdb 脚本,可以找到指向某个重要值的指针。

我想调用 gdb print 命令将此值分配给值历史记录,以便将来在其他调试命令中引用。

怎么做?

我知道我可以定义将返回此值的 python 函数 - 但我真的希望 gdb 命令向后兼容旧的 gdb 脚本。

0 投票
0 回答
263 浏览

gdb - gdb如何使用继续命令使用标准输入参数继续执行

我正在玩ctf,程序正在检查输入是否是proccess pid然后获取 shell 现在我通过gdb-pedagetpid命令使用 gdb-peda 获取 pid 我如何使用 stdin args 继续执行,我将在其中输入 pid?

我已经尝试过 gdb> break *main+0 gdb> r break point 1 + 0x0... gdb> getpid gdb> continue (pid) 在程序已经运行时无法将输入传递给程序的问题,它在没有我的参数的情况下正常退出如何解决我需要在断点后对程序进行标准输入?

0 投票
1 回答
516 浏览

debugging - gdb 破解 && 密码分析 CTF

大家好,我正在玩 CTF,我必须破解一个程序来获取 shell 源代码是:

现在我用 gdb 调试它,因为我从源代码中了解到我必须在运行时输入 proccessid (PID) 才能使用GDB-PEDA获得成功的 shell我在断点期间尝试了 getpid,但是如何使用 gdb 继续使用 proccess id 只运行命令传递输入对程序有什么帮助!

任何通知

0 投票
1 回答
177 浏览

matlab - 通过 Python API 从 gdb 调试 MATLAB mex

我知道使用 gdb 在 Linux 上调试 MATLAB mex 文件的过程,如下所述:https ://www.mathworks.com/help/matlab/matlab_external/debugging-on-linux-platforms.html

此过程涉及通过命令行启动 MATLAB

然后从 gdb 控制台运行 MATLAB

一次在 gdb 中,以及在运行 mex 时中断的其他一些步骤。

但是,我想通过 Python 的 gdb API 对我的 gdb 调试进行更高级的封装。

这个在 Python 中包装 gdb API 的过程通常从以下内容开始,以调试名为 foo 的程序

我不确定是否可以将相同的概念应用于调试 MATLAB。我确信它是可能的,因为像 gdbgui 这样的 gdb 前端是用 Python 构建的,可以用

但我不确定如何为 gdb 调整类似于我自己的 Python 包装器的东西?

0 投票
1 回答
73 浏览

python - Apply GDB FrameDecorator when stepping

I've written a frame filter that applies a FrameDecorator object to all frames, and it works for backtraces (when using the bt command). However, when I use up, down, or explicitly go to a frame like f 0, gdb prints the undecorated frame.

Is there a way to always apply a FrameDecorator even when stepping through frames?

0 投票
2 回答
1786 浏览

python - 如何使用 GDB 在 C 级调试 python 脚本。给我一个简单的例子

如何使用 GDB 在 C 级调试 python 脚本。给我一个简单的例子。我的主要目标是获取从我的 python 脚本调用的 libc 函数的跟踪。

0 投票
1 回答
225 浏览

gdb - 以编程方式检测 GDB 到达的断点

我有一个调试我的应用程序的脚本,它确实设置了 2 个断点。如果我要手动调试它,我将能够看到哪个被触发了。但是以自动方式进行,我不知道到达了哪个断点,有没有办法编写 if 条件或其他东西来检测到达哪个断点?

如果 vanilla gdb 无法使用此功能,而只能使用 python gdb,我将很乐意切换/升级该过程。

编辑:在汤姆的帮助下,我可以拥有

然后当断点被触发时,我可以检查变量以了解我在哪里停止。在纯软件上下文中,这可能更容易,并且可能一开始就不需要多个断点。这是在测试可能不规律发生故障的硬件,那么这种方法应该可以解决问题。

0 投票
1 回答
630 浏览

python - gdb.execute 阻塞 python 脚本中的所有线程

我正在使用 Python 2.7 编写 GDB 脚本。

我只是用gdb.execute("stepi"). 如果被调试的程序处于空闲状态并等待用户交互,gdb.execute("stepi")则不返回。如果出现这种情况,我想在不终止 gdb 的情况下停止调试会话。

为此,我创建了一个线程,如果当前指令运行超过 x 秒,它将终止调试的进程:

但是,gdb.execute正在暂停我的线程......如果它处于空闲状态,是否有另一种方法可以杀死被调试的进程?

0 投票
0 回答
102 浏览

c - 调试难以重现的 C 错误。动态断点

我很难重新创建错误,我希望在python GDB script检测到错误时使用 a 来停止进程(我将在调试中运行它,直到错误重新生成)。参考从 snprintf 中看到的杂散字符

我目前制作了一个脚本,可以创建一个break-point并行读取serial终端以检测字符串中的错误。这是脚本:

背景

我有一个硬件正在发送格式的字符串

[[12.12345678,12.12345678],[12.12345678,12.12345678],...]

但有时字符串可能会出现类似于

[[12.12345678,12.12345678],[ 55.01 [12.12345678,12.12345678],...]

我从来没有能够重现这个错误,所以我决定编写一个脚本,等待看到错误,然后是interruptsGDB。转储堆栈和所有相关的变量。

请参考原始C问题以了解更多错误

问题

  1. 如何创建动态中断?即,当看到失败的字符串时,我应该发送Ctrl+C以停止进程并控制提示。
  2. 我如何找到错误?人们通常使用这些测试方法吗?你能把它们链接起来吗?

更新

该错误已通过将sprintf函数替换为不处理 64 位的函数(在 32 位 ARM 环境中,请参阅问题)直接解决。请转到原始问题以查找使用的新功能。

0 投票
2 回答
387 浏览

python - 使用 conda 环境运行 gud-pdb

如何在给定环境pdb中激活的文件上从 emacs运行。conda

我已经设置exec-pathPATH包含当前的 conda 路径,例如。

从emacs内部,

返回正确的python。pdb位于“/usr/bin/pdb”。但是,如果我在conda 环境pdb中运行的文件上运行,例如。sci它已经numpy安装了等,pdb找不到这些库:

测试.py

pdb ./test.py