【发布时间】:2011-06-04 16:51:59
【问题描述】:
我正在调试一个 C 程序(不是我编写的)。我启用了所有的内部调试工具(一大堆 printf),并且我编写了一个使用 proc_open() 的小型 PHP 脚本,它只获取 stdout 和 stderr,并在一个文件中对它们进行时间坐标。
目前,二进制文件因 glibc 捕获的 realloc() 错误而死,并打印 glibc 回溯,开头为:
*** glibc detected *** /sbin/rsyslogd: realloc(): invalid next size: 0x00002ace626ac910 ***
这是我不明白的事情:我已经确认 PHP 脚本正在从二进制进程中捕获 stdout 和 stderr 并将它们写入正确的文件,但是这个回溯仍然打印到控制台。这是从哪里来的?除了stdout和stderr还有什么神奇的输出通道吗?
关于如何将此回溯捕获到文件或使用 stderr 将其发送出去的任何想法?
谢谢, 杰森
【问题讨论】: