我想在 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/