Como redirecionar o Core dump e empilhar mensagens de quebra

1

Eu posso redirecionar stdout e stderr de um programa usando ./a.out > output.txt 2> error.txt

Mas isso não redireciona mensagens como segmentation faults .
Então eu encontrei

{ ./a.out < $TEST_DIR'test'$i'.in' > $OUTPUT_DIR/output$i.txt ; } 2> $OUTPUT_DIR/error$i.txt

No entanto, as mensagens de core dump e stack smash não são redirecionadas.
Como redirecioná-los?

    
por Jithin Pavithran 14.09.2018 / 19:13

1 resposta

1

As mensagens de 'Falha de Segmentação' não são impressas pelo programa com falha, mas pelo shell.

O *** stack smashing detected *** & mensagens backtrace + memmap (pelo menos no meu sistema) são impressas pelo manipulador de protetor de pilha diretamente no terminal de controle ( _PATH_TTY / dev/tty é aberto diretamente, sem considerar stdout ou stderr, então as mensagens são gravadas lá - veja fortify_fail.c e libc_fatal.c em glibc).

Se você quiser pegar a coisa toda, execute o seu programa com script (1) (por exemplo, script -c './rpneval ...' ) ou algo semelhante.

    
por 14.09.2018 / 20:10