
Memoro: एक विस्तृत हीप प्रोफ़ाइलर
मेमोरो एक अत्यंत विस्तृत हीप प्रोफाइलर है।
मेमोरो न केवल आपको दिखाता है कि आपका प्रोग्राम कहाँ और कब हीप आवंटन करता है, बल्कि यह भी दिखाता है कि आपके प्रोग्राम ने उस मेमोरी का वास्तव में उपयोग कैसे किया।
मेमोरो हीप तक पहुँचों के बारे में विस्तृत जानकारी एकत्र करता है, जिसमें मेमोरी पर पढ़ने और लिखने की क्रियाएँ शामिल हैं और वे कब होती हैं, ताकि आपको यह अंदाजा हो सके कि आपका प्रोग्राम हीप मेमोरी का कितनी कुशलता से उपयोग करता है।
मेमोरो में एक विज़ुअलाइज़र एप्लिकेशन शामिल है जो इस सारी जानकारी को स्कोर और संकेतकों में संक्षेपित करता है ताकि आपको समस्या क्षेत्रों को पहचानने में मदद मिल सके।

मेमोरो कैसे काम करता है, इसके बारे में अधिक विस्तृत जानकारी के लिए, यहाँ देखें।
नीचे दिए गए चरण मेमोरो का उपयोग करने के लिए त्वरित-प्रारंभ मार्गदर्शिका हैं। विस्तृत सेट-अप निर्देशों के लिए यहाँ देखें। मेमोरो का उपयोग करने के लिए मार्गदर्शिका के लिए, यहाँ देखें।
सबसे पहले, आपको LLVM/Clang का एक स्थानीय संस्करण बनाना होगा ताकि आप अपने कोड को मेमोरो इंस्ट्रूमेंटेशन के साथ संकलित कर सकें। पूर्व-निर्मित रिलीज़ अभी तक उपलब्ध नहीं हैं, लेकिन यदि पर्याप्त लोग मुझे परेशान करेंगे तो शायद मैं उन्हें यहाँ होस्ट करूँगा।
LLVM/Clang निर्माण निर्देश यहाँ का पालन करें, लेकिन नीचे सूचीबद्ध विशिष्ट रिपॉज़िटरी का उपयोग करें। मेमोरो अभी तक LLVM/Clang डेव ब्रांच में नहीं है।
SVN के बजाय git मिरर रिपॉज़िटरी का उपयोग करने की अनुशंसा की जाती है। मुख्य LLVM रिपो, Clang रिपो और CompilerRT रिपो के लिए, मेमोरो संस्करणों का उपयोग करें:
ये रिपॉज़िटरी डिफ़ॉल्ट रूप से branch memoro_80 पर होनी चाहिए।
इस रिपो को git clone [email protected]:epfl-vlsc/memoro.git के साथ क्लोन करें।
निर्देशिका में प्रवेश करें।
$ cd memoro
सुनिश्चित करने के लिए npm install चलाएँ कि सभी JS निर्भरताएँ मौजूद हैं।
फिर आपको C++ डेटा प्रोसेसिंग ऐडॉन बनाने की आवश्यकता होगी।
ऐसा करने के लिए, आपको पहले node-gyp स्थापित करने की आवश्यकता हो सकती है (npm install -g node-gyp)
फिर,
cd cpp
node-gyp build --release --target=1.7.9 --arch=x64 --dist-url=https://atom.io/download/electron
cd ..
target इलेक्ट्रॉन संस्करण है जो मुख्य ऐप चलाने के लिए उपयोग किए जाने वाले से मेल खाना चाहिए।
यदि आवश्यक हो तो इसे समायोजित करें।
यदि आवश्यक हो तो arch भी समायोजित करें, हालाँकि मैंने अभी तक गैर-*nix x64 सिस्टम पर परीक्षण नहीं किया है।
एक Makefile भी है जो अधिकांश उपयोगकर्ताओं के लिए काम करना चाहिए।
जाहिर है, node-gyp के उपयोग के लिए आपके पास एक C++ कंपाइलर स्थापित होना चाहिए।
सबसे पहले, उस सॉफ़्टवेयर का निर्माण करें जिसे आप पहले बनाए गए LLVM/Clang का उपयोग करके प्रोफाइल करना चाहते हैं।
इंस्ट्रूमेंटेशन जोड़ने के लिए कंपाइलर फ़्लैग -fsanitize=memoro जोड़ें और अच्छे स्टैक ट्रेस प्राप्त करने के लिए वैकल्पिक रूप से -fno-omit-frame-pointer जोड़ें।
यदि आपके पास एक अलग लिंकिंग चरण है, तो मेमोरो/सैनिटाइज़र रनटाइम को लिंक करने के लिए इसे -fsanitize=memoro की भी आवश्यकता हो सकती है।
स्टैक ट्रेस के लिए LLVM सिंबलाइज़र का उपयोग करने की अनुशंसा की जाती है, एनवी वेरिएबल MEMORO_SYMBOLIZER_PATH को सेट करें जहाँ llvm-symbolizer रहता है।
या बस इसे अपने PATH में रखें।
अपना प्रोग्राम चलाएँ। पूरा होने के बाद, मेमोरो रनटाइम दो फ़ाइलें उत्पन्न करेगा, *.trace और *.chunks। इन्हें विज़ुअलाइज़र का उपयोग करके खोला और देखा जा सकता है।
C++ ऐडॉन बनाने के बाद, ऐप को सीधे रिपो निर्देशिका से चलाया जा सकता है
electron .
File->Open या Cmd/Ctrl-O खोलने के लिए, नेविगेट करें और या तो ट्रेस या चंक फ़ाइल का चयन करें।
हीप समस्याओं के लिए शिकार करने की शुभकामनाएँ :-)
सभी कोड और संपत्तियों को एक एप्लिकेशन पैकेज में इकट्ठा और निर्यात करने के लिए electron-packager का उपयोग करें।
electron-packager . --overwrite --platform=<platform> --arch=x64 --electron-version=1.7.9 --icon=assets/icons/icon64.icns --prune=true --out=release-builds
फिर से, यदि आवश्यक हो तो प्लेटफ़ॉर्म, आर्क और इलेक्ट्रॉन संस्करण समायोजित करें।
योगदान का स्वागत से अधिक है। कृपया एक पुल रिक्वेस्ट सबमिट करें या संपर्क करें।