Bash
如何重定向核心轉儲和堆棧粉碎消息
我可以使用重定向程序的標準輸出和標準錯誤
./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 ...'
)或類似的東西執行您的程序。