glibc backtrace - 无法将输出重定向到文件

Jas*_*man 12 debugging glibc

我正在调试一个C程序(我没写过).我启用了所有内部调试工具(一大堆printf),我编写了一个使用proc_open()的小PHP脚本,只抓取stdout和stderr,并将它们在一个文件中进行时间坐标.

目前,二进制文件正在死于一个由glibc捕获的realloc()错误,并且打印了一个glibc backtrace,从以下开始:

*** glibc detected *** /sbin/rsyslogd: realloc(): invalid next size: 0x00002ace626ac910 ***
Run Code Online (Sandbox Code Playgroud)

这是我不明白的事情:我已经确认PHP脚本正在从二进制文件的进程中捕获stdout和stderr并将它们写入正确的文件,但是这个回溯仍然打印到控制台.这是从哪里来的?除了stdout和stderr之外还有一些神奇的输出通道吗?

有关如何将此回溯捕获到文件或使用stderr发送出去的任何想法?

谢谢你,杰森

Jas*_*man 13

对不起......我在大约半小时的谷歌搜索后问了这个问题,但经过一番调查后,我找到了一个解决方案......在Fedora邮件列表帖子中(http://www.redhat.com/archives/rhl -devel-list/2009-August/msg00982.html)在Koji构建系统中处理这个问题...

export LIBC_FATAL_STDERR_=1
Run Code Online (Sandbox Code Playgroud)

显然,默认情况下,错误报告由于某种原因直接转到/ dev/tty ...