2013-05-09 4 views
5

लिनक्स पर, मेरे पास एक सी ++ एप्लिकेशन है जो कुछ साझा पुस्तकालयों को लोड करने के लिए dlopen() का उपयोग कर रहा है, लेकिन मुझे संदेह है कि साझा लाइब्रेरी लोड होने का संस्करण वह नहीं है जिसे मैं उम्मीद करता हूं क्योंकि मेरा डिबगिंग ट्रेस कोड प्रकट नहीं होता है निष्पादित किए जाने के लिए।यह देखने के लिए कि मैं किस पुस्तकालयों का उपयोग कर रहा हूं, यह देखने के लिए एक चल रही प्रक्रिया की जांच कैसे कर सकता हूं?

क्या उन सभी साझा पुस्तकालयों को क्वेरी करने के लिए चल रही प्रक्रिया की जांच करने का कोई तरीका है जो वर्तमान में खुला है और उन पुस्तकालयों में से प्रत्येक का मार्ग? दूसरे शब्दों में, ldd जैसा कुछ है लेकिन यह चल रहे निष्पादन योग्य पर काम करता है और साथ ही रनटाइम लोड लाइब्रेरी सूचीबद्ध करता है।

+1

'lsof -p _process_id_' – stardust

+3

K को आजमाएं एक पूर्ण उत्तर है। http://stackoverflow.com/questions/5103443/how-to-check-what-shared-library-is-loaded-at-run-time – stardust

उत्तर

7

यदि आप पुस्तकालय फ़ाइलों को जानना चाहते हैं तो एक प्रोग्राम खोला गया है, तो आप pmap को आजमा सकते हैं। उदाहरण के लिए, अगर हम पुस्तकालयों है कि इस प्रक्रिया 3860 पार्टी की योजना बनाई खोल दिया जानना चाहते हैं, परिणाम हो सकता है:

3860: bash 
08048000 880K r-x-- /bin/bash 
08124000  4K r---- /bin/bash 
08125000  20K rw--- /bin/bash 
0812a000  20K rw--- [ anon ] 
099ae000 348K rw--- [ anon ] 
b715c000  44K r-x-- /lib/i386-linux-gnu/libnss_files-2.15.so 
b7167000  4K r---- /lib/i386-linux-gnu/libnss_files-2.15.so 
b7168000  4K rw--- /lib/i386-linux-gnu/libnss_files-2.15.so 
b7169000  88K r-x-- /lib/i386-linux-gnu/libnsl-2.15.so 
b717f000  4K r---- /lib/i386-linux-gnu/libnsl-2.15.so 
b7180000  4K rw--- /lib/i386-linux-gnu/libnsl-2.15.so 
b7181000  8K rw--- [ anon ] 
b7183000  28K r-x-- /lib/i386-linux-gnu/libnss_compat-2.15.so 
b718a000  4K r---- /lib/i386-linux-gnu/libnss_compat-2.15.so 
b718b000  4K rw--- /lib/i386-linux-gnu/libnss_compat-2.15.so 
b71a1000  4K r---- /usr/lib/locale/locale-archive 
b71a2000 1428K r---- /usr/lib/locale/locale-archive 
b7307000 2048K r---- /usr/lib/locale/locale-archive 
b7507000  4K rw--- [ anon ] 
b7508000 1676K r-x-- /lib/i386-linux-gnu/libc-2.15.so 
b76ab000  8K r---- /lib/i386-linux-gnu/libc-2.15.so 
b76ad000  4K rw--- /lib/i386-linux-gnu/libc-2.15.so 
b76ae000  16K rw--- [ anon ] 
b76b2000  12K r-x-- /lib/i386-linux-gnu/libdl-2.15.so 
b76b5000  4K r---- /lib/i386-linux-gnu/libdl-2.15.so 
b76b6000  4K rw--- /lib/i386-linux-gnu/libdl-2.15.so 
b76b7000 112K r-x-- /lib/i386-linux-gnu/libtinfo.so.5.9 
b76d3000  8K r---- /lib/i386-linux-gnu/libtinfo.so.5.9 
b76d5000  4K rw--- /lib/i386-linux-gnu/libtinfo.so.5.9 
b76d8000  28K r--s- /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache 
b76df000  40K r-x-- /lib/i386-linux-gnu/libnss_nis-2.15.so 
b76e9000  4K r---- /lib/i386-linux-gnu/libnss_nis-2.15.so 
b76ea000  4K rw--- /lib/i386-linux-gnu/libnss_nis-2.15.so 
b76eb000  8K rw--- [ anon ] 
b76ed000  4K r-x-- [ anon ] 
b76ee000 128K r-x-- /lib/i386-linux-gnu/ld-2.15.so 
b770e000  4K r---- /lib/i386-linux-gnu/ld-2.15.so 
b770f000  4K rw--- /lib/i386-linux-gnu/ld-2.15.so 
bfbbf000 132K rw--- [ stack ] 
total  7152K 

काश यह आप के लिए मदद मिलेगी।

+0

जीडीबी के माध्यम से इसे लंबे समय तक जीवित रखने के लिए एक प्रोग्राम चलाने के लिए था, लेकिन pmap नौकरी करता है धन्यवाद! – dhardy

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

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