मैं जो इस तरह दिखता है एक छीन एप्लिकेशन द्वारा बनाया गया एक स्टैक ट्रेस करने के लिए पतों कन्वर्ट करने के लिए:gdb का उपयोग लाइनों
*** Check failure stack trace: ***
@ 0x7f0e442d392d (unknown)
@ 0x7f0e442d7b1f (unknown)
@ 0x7f0e442d7067 (unknown)
@ 0x7f0e442d801d (unknown)
@ 0x7f0e457c55e6 (unknown)
@ 0x7f0e457c5696 (unknown)
@ 0x4e8765 (unknown)
@ 0x4a8b43 (unknown)
@ 0x7f0e43197ced (unknown)
@ 0x4a6889 (unknown)
और मैं निष्पादन की एक गैर छीन और उसके संस्करण पुस्तकालयों के सभी (संकलित डीबग जानकारी के साथ)। लेकिन मैं पते को फाइलों और रेखा संख्याओं में कैसे अनुवाद कर सकता हूं ??
यहाँ मैं क्या करने की कोशिश की है:
gdb
set solib-absolute-prefix /path/to/non-stripped/edition/of/root/filesystem/sysroot/
file /path/to/non-stripped/edition/of/root/filesystem/sysroot/usr/bin/my-buggy-app
info line *0x7f0e457c5696
जब मैं फ़ाइल आदेश में टाइप यह केवल फ़ाइल, नहीं सभी पुस्तकालयों जो उपयोग किया जाता है से प्रतीकों लोड करता है। क्या ऐसा कोई तरीका है?
"जानकारी लाइन" कमांड का कहना है:
कोई पंक्ति संख्या जानकारी पते के लिए उपलब्ध 0x7f0e442d801d पता साझा पुस्तकालयों में से एक है, क्योंकि
कौन सा मैं मानता है, लेकिन कैसे कर सकते हैं मुझे पता है कि उनमें से कौन सा?
['addr2line'] (http://linuxcommand.org/man_pages/addr2line1.html)? –
@ another.anon.coward वर्ष, मैंने कोशिश की लेकिन मुझे नहीं पता कि कौन सी फाइल को देखना है, क्योंकि पते साझा पुस्तकालयों को इंगित कर रहे हैं। – Allan
@ एलन: आप 'info sharedlibrary' कमांड का उपयोग यह जानने के लिए कर सकते हैं कि कौन सी साझा लाइब्रेरी पते' 0x7f0e442d801d' से संबंधित है। – ks1322