Pode haver uma maneira melhor, mas isso automatiza isso.
Coloque o seguinte em ~/backtrace :
backtrace
quit
Coloque isso em um script chamado seg_wrapper.sh em um diretório em seu caminho:
#!/bin/bash
ulimit -c unlimited
"$@"
if [[ $? -eq 139 ]]; then
gdb -q $1 core -x ~/backtrace
fi
O comando ulimit faz com que o núcleo seja descartado. "$@" são os argumentos dados ao script, portanto, seria seu programa e seus argumentos. $? detém o status de saída, 139 parece ser o status de saída padrão da minha máquina para um segfault.
Para gdb , -q significa silêncio (sem mensagem de introdução) e -x indica gdb para executar comandos no arquivo fornecido a ele.
Uso
Então, para usá-lo, você apenas faria:
seg_wrapper.sh ./mycommand and its arguments
Atualizar
Você também pode escrever um manipulador de sinal que faça isso, veja este link .