【问题标题】:Can I set a linux program to be started and attached by gdb?我可以设置一个由 gdb 启动和附加的 linux 程序吗?
【发布时间】:2017-02-24 07:46:37
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你能用运行该程序的同名脚本替换该程序,然后附加到 gdb 吗?

标签: c++ linux debugging gdb associate


【解决方案1】:

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

您无需修改​​任何 system 文件即可实现此目的。改为修改/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' 处中断并运行?

上面的脚本会自动完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多