我正在调试一个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 ...
归档时间: |
|
查看次数: |
1637 次 |
最近记录: |