2012-01-17 14 views
9

जीडीबी में कोर डंप लोड करते समय यह स्वचालित रूप से क्रैश होने का कारण प्रदर्शित होता है। उदाहरण के लिएजीडीबी में अंतिम प्राप्त सिग्नल कैसे मुद्रित करें?

कार्यक्रम 11, सेगमेंटेशन गलती के साथ समाप्त हुआ कार्यक्रम।

क्या जानकारी फिर से प्राप्त करने का कोई तरीका है? बात यह है कि मैं एक स्क्रिप्ट लिख रहा हूं जिसके लिए इस जानकारी की आवश्यकता है। लेकिन अगर सिग्नल कोर डंप एमडी लोड करने के बाद ही उपलब्ध है तो मैं बाद में जानकारी तक नहीं पहुंच सकता।

क्या इस तरह की एक महत्वपूर्ण विशेषता के लिए वास्तव में कोई आदेश नहीं है?

उत्तर

3

आप जानते हैं कि कोर फ़ाइल का नाम है, तो आप target core आदेश जो लक्ष्य कोर फ़ाइल respecifies जारी कर सकते हैं:

(gdb) target core core.8577 
[New LWP 8577] 
Core was generated by `./fault'. 
Program terminated with signal 11, Segmentation fault. 
#0 0x080483d5 in main() at fault.c:10 
10  *ptr = '\123'; 
(gdb) 

गर्भित प्रश्न का सवाल है, क्या info last signal आदेश है?, मुझे नहीं पता। ऐसा प्रतीत नहीं होता है।


कोर फ़ाइल के नाम आदेश info target से प्राप्त किया जा सकता है:

(gdb) info target 
Symbols from "/home/wally/.bin/fault". 
Local core dump file: 
    `/home/wally/.bin/core.8577', file type elf32-i386. 
    0x00da1000 - 0x00da2000 is load1 
    0x08048000 - 0x08049000 is load2 
... 
    0xbfe8d000 - 0xbfeaf000 is load14 
Local exec file: 
    `/home/wally/.bin/fault', file type elf32-i386. 
    Entry point: 0x8048300 
    0x08048134 - 0x08048147 is .interp 
    0x08048148 - 0x08048168 is .note.ABI-tag 
    0x08048168 - 0x0804818c is .note.gnu.build-id 
    0x0804818c - 0x080481ac is .gnu.hash 
    0x080481ac - 0x080481fc is .dynsym 
    0x080481fc - 0x08048246 is .dynstr 
... 
+0

धन्यवाद, इसलिए वहाँ पढ़ने के लिए एक संभावना है gdb को दिए गए तर्क या जैसे मेरी स्क्रिप्ट पर तर्क पारित करने के लिए "gdb निष्पादन योग्य कोर - बैच-एक्स myscript.py [यहां तर्क डालें]" क्योंकि मुझे यह संभावना भी मिली, लेकिन मुझे कोर फ़ाइल का नाम निर्धारित करने की आवश्यकता है जिसे आमतौर पर gdb – Uhlo

+1

@Uhlo के तर्कों के माध्यम से दिया जाता है: आदेश 'जानकारी लक्ष्य' निष्पादन योग्य और कोर फ़ाइल नामों को दिखाता है थोड़ा और जानकारी। शायद वह करेगा? – wallyk

+0

बहुत बहुत धन्यवाद !! इसे पार्स करना बहुत कठिन है लेकिन कम से कम यह एक तरीका है जो काम कर रहा है :) धन्यवाद! – Uhlo

8

पिछले संकेत के बारे में जानकारी मुद्रित करने के लिए निष्पादित

p $_siginfo 
+1

उस विकल्प के लिए धन्यवाद! ऐसा लगता है कि प्रोग्राम के निष्पादित होने के बाद या बाद में मैं केवल इस आदेश को निष्पादित कर सकता हूं। हर बार जब मैं इसे कोर डंप के साथ आज़माता हूं तो यह मुझे त्रुटि देता है 'siginfo' – Uhlo

+0

पढ़ने में असमर्थ है। यह जीडीबी की स्मृति स्मृति है और डिस्क पर जारी नहीं है। – steve

+0

मैं निष्पादित प्रोग्राम के बिना कोर डंप फ़ाइल से $ _siginfo प्रिंट कर सकता हूं। – firo

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