如何重定向核心转储和堆栈粉碎消息

如何重定向核心转储和堆栈粉碎消息

我可以使用重定向程序的标准输出和标准错误./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

然而,核心转储和堆栈粉碎消息没有被重定向。
如何重定向它们?

答案1

“分段错误”消息不是由出错程序打印的,而是由 shell 打印的。

& backtrace + memmap消息*** stack smashing detected ***(至少在我的系统上)由堆栈保护器处理程序直接打印到控制终端(_PATH_TTY/dev/tty直接打开,不考虑 stdout 或 stderr,然后消息写入那里 - 请参阅fortify_fail.clibc_fatal.c在 glibc 中)。

如果您想捕获整个事情,请使用 script(1) (例如script -c './rpneval ...')或类似的东西运行您的程序。

相关内容