C++ 我可以设置一个由gdb启动和连接的linux程序吗?

C++ 我可以设置一个由gdb启动和连接的linux程序吗?,c++,linux,debugging,gdb,associate,C++,Linux,Debugging,Gdb,Associate,在windows上,我可以将globalflag设置为将程序的开始与调试器相关联,因此即使我从脚本调用程序,调试器也会启动我的程序,并能够在某个代码行中断 那么如何在linux上使用gdb实现这一点呢?例如,我已经用gcc的-g选项编译了/home/my/a.out,我希望谁调用了a.out,它将由gdb提出: 我是否必须修改一些系统文件,比如说,/home/my/a.out应该由gdb启动并自动附加 如何使gdb自动连接它,然后在“main”处断开并运行 我是否必须修改一些系统文件,比如说,/

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

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

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

  • 如何使gdb自动连接它,然后在“main”处断开并运行

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

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

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

    mv /home/my/a.out /home/my/a.out.orig
    
    用shell脚本替换
    /home/my/a.out

    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
    

    cat>/home/my/a.out您能用运行该程序并连接到gdb的同名脚本替换该程序吗?