自动化 GDB 内存转储

自动化 GDB 内存转储

我正在尝试使用 GDB 从我的 Linux 机器上的一个进程转储内存,但我正在尝试使用脚本自动执行此操作。

到目前为止我一直在使用以下命令(示例):

$ gdb --pid [pid]
(gdb) dump memory dump_file 0x00621000 0x00622000

有没有办法只使用一个可以在 shell 脚本中实现的命令来执行此操作?或者有没有办法使用 shell 脚本执行 gdb 命令?

任何帮助将不胜感激 :)

答案1

在 /usr/local/bin 中创建一个文件并使其可执行:

#!/bin/sh
if [ $# -eq 3 ]; then
  tf=$(tempfile)
  echo -e "dump memory dump_file ${2} ${3}" > $tf
  gdb -p $1 -x $tf
else
    echo "Pass me a PID MEM_START MEM_END"
fi

如果你给它命名内存转储-gdb或者千年发展目标简而言之,您可以像这样使其可执行:

chmod 750 /usr/local/bin/mdg

然后你可以运行mdg 1234 0x00621000 0x00622000

相关内容