मैं लिनक्स में एक रनिंग प्रोसेस की डंप फ़ाइल कैसे बना सकता हूं?


8

मेरे पास एक प्रक्रिया है जो लिनक्स के तहत नियंत्रण से बाहर घूम रही है, और मैं एक डंप फ़ाइल बनाना चाहूंगा जिसे मैं अपने देव मशीन में ले जा सकता हूं, और वहां जांच कर सकता हूं।

विंडोज में, कई अलग-अलग तरीकों से एक रनिंग प्रोग्राम का "मिनीडंप" बनाना संभव है, जिसमें एडीवीप्लस और विंडोज टास्क मैनेजर शामिल हैं, प्रोसेस टैब पर जाकर और "डंप फाइल बनाएं" पर राइट-क्लिक करें।

क्या लिनक्स में इसे पूरा करने का कोई तरीका है?

मुझे कॉल स्टैक, हीप और स्टैक मेमोरी (विशेष रूप से स्टैक), अपवाद और बाकी सभी की आवश्यकता होगी।


आश्चर्य है कि यदि कोई उत्तर आपके लिए उपयोगी था?
वैलेंटाइन

@ वालेंटिन: एक शैक्षिक दृष्टिकोण से, हाँ, उत्तर सहायक थे और मैंने उन्हें उकेरा। हालाँकि उन्होंने उस प्रश्न का उत्तर नहीं दिया जो मैंने वास्तव में पूछा था, कि डंप फ़ाइल का निर्माण कैसे किया जा सकता है जिसे मैं एक देव मशीन में ले जा सकता हूं और जांच कर सकता हूं। मैं एक Windows minidump फ़ाइल के अनुरूप कुछ देख रहा था।
जॉन डिब्लिंग

जवाबों:


12

वैसे डंप फ़ाइल बनाने का तरीका है:

   gcore - Generate a core file for a running process

SYNOPSIS gcore [-o फ़ाइल नाम] pid


7
pmap <PID>

या

strace -f -o xxx -p <PID> 

वे उपकरण हो सकते हैं जिनकी आपको तलाश है।

pmap आपको प्रदान की गई प्रक्रिया के मेमोरी उपयोग के बारे में एक अवलोकन दिखाता है। स्ट्रेस एक क्रिया में होने वाली प्रत्येक क्रिया को ट्रैक करता है। -F के साथ आप बाल प्रक्रियाओं को देखने पर विचार करने के लिए स्ट्रेस भी बताते हैं और -o xxx स्ट्रेस को फाइल में आउटपुट लिखने के लिए कहता है। आप स्ट्रेस का उपयोग करके एक नई प्रक्रिया भी शुरू कर सकते हैं, जैसे कि

strace cat /etc/passwd

यदि आप केवल विशिष्ट जानकारी में रुचि रखते हैं, जैसे कि क्या फाइलें खोली गई हैं, तो आप तदनुसार स्ट्रेस शुरू कर सकते हैं:

strace -f -o xxx -e trace=open -p <PID>

4

इसे इस्तेमाल करे:

cat /proc/<pid>/smaps > mem.txt

यह लिंक आपकी मदद भी कर सकता है।


1

इस बीच Sysinternals सुइट से ProDDump को संबंधित GitHub पेज से बहुत उदार एमआईटी लाइसेंस के तहत उपलब्ध कराया गया है ।

Usage: procdump [OPTIONS...] TARGET
   OPTIONS
      -C          CPU threshold at which to create a dump of the process from 0 to 100 * nCPU
      -c          CPU threshold below which to create a dump of the process from 0 to 100 * nCPU
      -M          Memory commit threshold in MB at which to create a dump
      -m          Trigger when memory commit drops below specified MB value.
      -n          Number of dumps to write before exiting
      -s          Consecutive seconds before dump is written (default is 10)
   TARGET must be exactly one of these:
      -p          pid of the process

इसलिए जैसा कि आप कमांड लाइन के तर्कों से कम कर सकते हैं, एक प्रक्रिया का "स्नैपशॉट" लेना आसान है जिसे आप जानते हैं कि बाद में gdbया तो विश्लेषण किए जाने के लिए संसाधनों की अनुचित मात्रा को लेना गलत है ।

हालाँकि, लिनक्स के लिए यह ProcDump अपने विंडोज चचेरे भाई की तुलना में फीचर-पूर्ण नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.