Bash

如何重定向核心轉儲和堆棧粉碎消息

  • July 17, 2019

我可以使用重定向程序的標準輸出和標準錯誤./a.out > output.txt 2> error.txt

但這些不會重定向消息,例如segmentation faults.

所以我發現

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

然而,核心轉儲和堆棧粉碎消息沒有被重定向。

如何重定向它們?

“Segmentation Fault”消息不是由出錯程序列印,而是由 shell 列印。

*** stack smashing detected ***& backtrace + memmap 消息(至少在我的系統上)由堆棧保護處理程序直接列印到控制終端(/_PATH_TTY直接dev/tty打開,不考慮 stdout 或 stderr,然後將消息寫入那裡 - 請參閱fortify_fail .c和glibc 中的libc_fatal.c )。

如果您想了解全部內容,請使用 script(1)(例如script -c './rpneval ...')或類似的東西執行您的程序。

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