0

在 Windows 上,我可以设置 globalflag 以将程序的启动与调试器相关联,因此即使我从脚本调用程序,调试器也会启动我的程序并能够在某些代码行处中断。

那么如何在 linux 上使用 gdb 来做到这一点呢?例如,我已经通过 gcc 使用 -g 选项编译了 /home/my/a.out,我希望谁调用过 a.out,它将由 gdb 提出:

  1. 我是否必须修改一些系统文件才能说 /home/my/a.out 应该由 gdb 启动并自动附加?

  2. 如何让 gdb 自动附加它,然后在“main”处中断并运行?

4

1 回答 1

1

我是否必须修改一些系统文件才能说 /home/my/a.out 应该由 gdb 启动并自动附加?

您无需修改​​任何系统文件即可实现此目的。/home/my/a.out改为修改。

将原始二进制文件移动到新名称:

mv /home/my/a.out /home/my/a.out.orig

替换/home/my/a.out为 shell 脚本:

cat > /home/my/a.out <<'EOF'
#!/bin/sh
exec gdb -ex start --args /home/my/a.out.orig "$@"
EOF
chmmod +x /home/my/a.out

如何让 gdb 自动附加它,然后在“main”处中断并运行?

上面的脚本将自动执行此操作。

于 2017-02-24T15:24:03.500 回答