2011-01-06 12 views
11

फ़ाइल आउटपुट को रीडायरेक्ट नहीं कर सकता है मैं एक सी प्रोग्राम डीबग करने की प्रक्रिया में हूं (जिसे मैंने नहीं लिखा था)। मेरे पास सभी आंतरिक डिबगिंग टूल (प्रिंटफ का पूरा समूह) सक्षम है, और मैंने एक छोटी PHP स्क्रिप्ट लिखी है जो proc_open() का उपयोग करती है और केवल stdout और stderr दोनों को पकड़ती है, और समय-निर्देश उन्हें एक फ़ाइल में समन्वयित करती है।glibc बैकट्रैक -

फिलहाल, बाइनरी एक realloc() त्रुटि है कि glibc द्वारा पकड़ा के साथ मर जाता है, और एक glibc पश्व-अनुरेखन छपा है, के साथ शुरुआत:

*** glibc detected *** /sbin/rsyslogd: realloc(): invalid next size: 0x00002ace626ac910 *** 

यहाँ बात मुझे समझ नहीं आता है: मैं मैंने पुष्टि की है कि PHP स्क्रिप्ट बाइनरी की प्रक्रिया से stdout और stderr दोनों को पकड़ रही है और उन्हें सही फ़ाइलों को लिख रही है, लेकिन यह बैकट्रैक अभी भी कंसोल पर मुद्रित है। यह कहां से आ रहा है? क्या stdout और stderr के अलावा कुछ जादुई आउटपुट चैनल है?

किसी भी विचार पर मैं इस बैकट्रैक को फ़ाइल में कैप्चर करने के बारे में कैसे जाता हूं, या इसे stderr के साथ भेज रहा हूं?

धन्यवाद, जेसन

उत्तर

11

क्षमा करें ... मैं के बारे में आधे googling के एक घंटे के बाद प्रश्न पूछा है, लेकिन एक छोटे से अधिक जांच के बाद, मैं एक समाधान मिला ... एक फेडोरा मेलिंग सूची पोस्ट में (http://www.redhat.com/archives/rhl-devel-list/2009-August/msg00982.html) कोजी में इस समस्या का निर्माण प्रणाली के साथ काम कर ...

export LIBC_FATAL_STDERR_=1 

जाहिर है डिफ़ॉल्ट रूप से त्रुटि रिपोर्ट किसी कारण के लिए/dev/tty सही जाना ...

+0

ओह ठीक है। हर जगह इतना टूटना। – Griwes

0

मेलिंग सूची है कि जेसन संदर्भ भी एस सुझाव देता है ome अधिक हेवी-ड्यूटी समाधान, इस प्रकार है:

IMHO कोजी (और उस बात के लिए नकली) चल रहा होना चाहिए अंदर बनाता है एक बंदी Pty जिसका उत्पादन यह वैसे भी लॉग करता है, भले ही वे पुन: निर्देशित सब कुछ। आप कभी नहीं जानते कि कुछ पैकेज क्या कोशिश कर रहे हैं पागल बकवास। (रोलाण्ड मैक्ग्रा, http://www.redhat.com/archives/rhl-devel-list/2009-August/msg00982.html)

के बाद पदों pty अजगर पैकेज का उपयोग यह पूरा करने के सुझाव देते हैं।

संबंधित मुद्दे