在 C 中执行期间记录错误

Logging error during execution in C

本文关键字:记录 错误 执行期      更新时间:2023-10-16

所以我知道记录编译错误可以在终端中按如下方式完成

gcc -o objectname filename.c 2>'compilation_error_log.txt'

我在执行代码时遇到一些内存错误,也想记录它。我尝试了相同的方法

./objectname 2>'Execution_error_log.txt'

但它不起作用。有人可以告诉我内存错误的存储位置,以便我可以记录它们吗?我的错误和输出看起来有点像这样

./objectname arg
Expected Output.
*** Error in `./objectname': double free or corruption (!prev): 0x089d1008 ***
Aborted (core dumped)

我想记录预期的输出和错误消息

默认情况下,

glibc 错误消息正在写入 /dev/tty ,这不会重定向到任何地方。

您可以通过将环境变量LIBC_FATAL_STDERR_设置为 1 来请求stderr中的消息。之后,您可以2> log.file.

当您的应用程序已关闭stderr(或文件描述符 2(时,默认行为是安全的解决方法,并且在此之后发生了致命错误。

在 ash 中执行 ./objectname arg 1> compilation_error_log.txt 2>&1 应该可以工作。基本上,您必须提供对文件的重定向,然后将错误流重定向到 stdin 文件描述符。