मैं एक बच्चे की प्रक्रिया के ढेर को पढ़ने की कोशिश कर रहा हूं, लेकिन भाग्य से नहीं। मुझे पता है कि इसका उपयोग करना संभव है ptrace, लेकिन ptraceइंटरफ़ेस आपको एक बार में केवल एक शब्द पढ़ने की अनुमति देता है, और मैं स्टैक के एक बड़े हिस्से को स्कैन करने की कोशिश कर रहा हूं।
मैंने इसे संलग्न करने के लिए पहली बार ptrace का उपयोग करने के बाद फ़ाइल /proc/$pid/memसे निकाले गए स्टैक की सीमाओं से पढ़ने की भी कोशिश की /proc/$pid/mapsहै (जैसा कि यहाँ सुझाव दिया गया है ) लेकिन यह पढ़ने में विफल रहता है (रूट के रूप में चलने पर भी) हालांकि एक ही कोड तब सफल होता है जब कोशिश की जाती है प्रक्रिया के विभिन्न भागों से पढ़ना (जैसे ढेर)।
मैं क्या गलत कर रहा हूं? क्या कोई और विकल्प है?
waitpidके बीचptrace(PTRACE_ATTACH,…)औरread(एक संभव रेस स्थिति अन्यथा वहाँ)? क्या त्रुटिreadवापस आती है? क्या बच्चा अपनी मेमोरी मैपिंग के साथ कुछ अजीब कर रहा है - जैसे आप एक साधारण बच्चे के साथ अपना कोड आज़मा सकते हैंsleep?