2017-02-24 32 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自動連接,然後在 '主' 打破並運行?

上面的腳本會自動做到這一點。

相關問題