c - 编写重复的 gdb 作业脚本

标签 c bash gdb

我想在 gdb 中对一堆不同的文件做同样的重复性工作。即,

bash$ gdb ./file1

... gdb starts up ...

gdb$ b *0xdeadbeef
gdb$ r < file2

... some output prints ...

gdb$ x/3a $esp

...  some addresses print ...

有什么方法可以编写脚本吗?通过脚本启动 gdb 很容易,但是将命令传递给 gdb 并获取它们的输出对我来说并不明显。我会使用重定向吗?

最佳答案

您可以只使用 shell 技巧按顺序传递多个 gdb 命令,换行符分隔到 gdb 的标准输入,供其使用。例如对于单个文件只需执行

printf '%s\n' 'b *0xdeadbeef' 'r < file2' 'x/3a $esp' | gdb ./file1

对于多个输入文件,一次将一个文件提供给gdb,从名称file* 开始。根据您的实际文件名使用适当的 glob 表达式

for file in file*; do
    printf '%s\n' 'b *0xdeadbeef' 'r < file2' 'x/3a $esp' | gdb "$file"
done

关于c - 编写重复的 gdb 作业脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417264/

相关文章:

c++ - OpenMP - 执行期间挂起

C循环: printing India Map

gdb - 矮人错误 : wrong version in compilation unit header (is 4, 应该是 2)

C - 分号的返回值是多少?

linux - 阅读终端行 Bash 脚本

linux - 我如何使这个 awk 命令的真实结果发出像 sendmail 等命令

linux - 通过 nohup 检查是否成功启动

c++ - gdb 错误不是可执行格式 : File format not recognized

c - 使用 -std=c99 的隐式声明

C 结构运算符