2017-02-24 48 views
0

在windows上,我可以设置globalflag以将程序的开头与调试程序关联起来,所以即使从脚本调用程序时,调试程序也会启动我的程序,并且能够在某些代码行处中断。我可以设置一个linux程序来启动并通过gdb连接吗?

那么如何使用gdb在linux上做到这一点?例如,我/home/my/a.out与GCC -g选项编译的,我想谁曾经调用到的a.out,它将被GDB长大:

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

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

+0

你可以使用与运行该程序的同名脚本替换该程序,然后附加到gdb? –

回答

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 "[email protected]" 
EOF 
chmmod +x /home/my/a.out 

如何让GDB自动连接,然后在 '主' 打破并运行?

上面的脚本会自动做到这一点。

相关问题