c - 编写重复性 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
,以 name 开头file*
。根据您的实际文件名使用适当的 glob 表达式
for file in file*; do
printf '%s\n' 'b *0xdeadbeef' 'r < file2' 'x/3a $esp' | gdb "$file"
done