gdb em um comando

1

Quando eu depurar um executável program com argumentos arg1 arg2 com gdb , executo a seguinte sequência

gdb
file ./program
run arg1 arg2
bt
quit

Como posso fazer o mesmo a partir de uma linha de comando no shell script?

    
por Viesturs 14.07.2018 / 15:38

2 respostas

6

Você pode passar comandos para o gdb na linha de comando com a opção -ex . Você precisa repetir isso para cada comando. Isso pode ser útil quando o programa precisa ler stdin para que você não queira redirecioná-lo. Por exemplo, para od -c

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

Então, em particular para sua pergunta, você pode usar:

gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program
    
por 14.07.2018 / 17:17
5

Os comandos podem ser inseridos na entrada padrão:

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

Ou os comandos podem ser colocados em afile e gdb executados com gdb -batch -x afile , ou se você odeia novas linhas (e o codificador de manutenção) com um shell sofisticado, você pode fazer tudo em uma única linha maneira de expressar a versão heredoc):

gdb -q <<< "file ./program"$'\n'run$'\n'...
    
por 14.07.2018 / 16:22

Tags