मैं php डीबग कर रहा हूँ। स्मृति में एक जगह को देखते समय जहां मुझे पता करने के लिए सूचक पता है, मैं सूचक को देखता हूं - उदाहरण के लिए 22810408 (0x08048122) - यह php के CLI संस्करण का उपयोग करते समय होता है।अपाचे को मेमोरी में ऑफ़सेट क्यों रखता है जहां php-cli वर्चुअल मेमोरी पतों रखता है?
हालांकि, जब मैं apache2 का उपयोग कर रहा हूं और एक ही काम करने का प्रयास कर रहा हूं, तो मुझे वास्तविक पते पर सूचक नहीं दिखाई देता है। इसके बजाय, मुझे ईएलएफ हेडर से ऑफसेट दिखाई देता है जो ईएलएफ हेडर के पते पर जोड़े जाने पर मुझे "वास्तविक" पता देता है। उदाहरण के लिए, यदि "असली" पता 0x08048122 था, और ईएलएफ शीर्षलेख 0x08048000 पर था तो मुझे इसी स्थिति में 22010000 (0x122) दिखाई देगा।
समस्या उत्पन्न होती है जब मैं स्टैक पर मौजूद किसी चीज़ के "असली" पते को जानने का प्रयास करता हूं। "वास्तविक" पता 0xbfccxxxx होना चाहिए, लेकिन जब मैं ईएलएफ शीर्षलेख में नंबर जोड़ता हूं, तो चीजें बस जोड़ती नहीं हैं! मुझे सभी गलत पते मिलते हैं।
मैंने पहले से ही लंबे समय तक googling की कोशिश की है, लेकिन मुझे सच में यकीन नहीं है कि यह कैसे सही तरीके से शब्द, या क्या खोजना है।
तो, जो मैं अनिवार्य रूप से देख रहा हूं, उस पर अधिक जानकारी है कि क्यों अपाचे के वास्तविक स्मृति पते की बजाय ऑफसेट है, और यह सब ढेर पर पते से कैसे संबंधित है। क्या कोई मुझे सामग्री के लिए कोई संकेत दे सकता है जो स्पष्ट हो सकता है?
क्या आप एक निष्पादन योग्य फ़ाइल में ऑफ़सेट देख रहे हैं, जो अभी तक लोड नहीं हो रहा है, बजाय चल रहे प्रक्रिया में पते के बजाय? – ugoren
शायद यह कैसे काम करता है। क्या आपके पास यह काम करने के बारे में कोई और जानकारी है? – optional
आपका "पॉइंटर" मुझे कुछ बेहतर परिणाम गुगल रहा है। ऐसा लगता है कि अपाचे के लिए, php एक .so है, असली निष्पादन योग्य फ़ाइल नहीं है। तो, जो मैं देखता हूं वह ऑफसेट है, वास्तविक पते नहीं, और यही कारण है। मैं अभी भी पूरी तरह से समझ नहीं पा रहा हूं कि मेरे "ऑफ़सेट" से वास्तविक वर्चुअल मेमोरी एड्रेस में कैसे जाना है। मैं अभी भी पढ़ रहा हूं, लेकिन कोई स्पष्टीकरण या अनिवार्य पढ़ने की सराहना की जाएगी। कम से कम अब मैं समझता हूं कि मैं सही पाने के लिए अपना ईएलएफ पता नहीं जोड़ सकता - ऐसा लगता है कि मुझे स्थानांतरण तालिका को पार्स करने की आवश्यकता है .. – optional