Gdb

gdb 在一個命令中

  • May 24, 2020

program當我使用參數調試執行檔時arg1 arg2gdb我執行以下序列

gdb
file ./program
run arg1 arg2
bt
quit

如何從 shell 腳本中的一個命令行執行相同的操作?

您可以使用選項在命令行上將命令傳遞給 gdb -ex。您需要對每個命令重複此操作。當您的程序需要讀取標準輸入以便您不想重定向它時,這可能很有用。例如,對於od -c

echo abc |
gdb -ex 'break main' -ex 'run -c' -ex bt -ex cont -ex quit  od

因此,特別是對於您的問題,您可以使用:

gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program

這些命令可以在標準輸入中輸入:

#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF

或者可以將命令放入afilegdb使用 執行gdb -batch -x afile,或者如果您討厭帶有花哨的 shell 的換行符(和維護編碼器),您可以在一行中完成所有操作(表示 heredoc 版本的不同方式):

gdb -q <<< "file ./program"$'\n'run$'\n'...

引用自:https://unix.stackexchange.com/questions/456294