Saya punya dua pertanyaan terkait:
- Bagaimana saya bisa melihat jika perpustakaan bersama saat ini dimuat? (yaitu seluruh sistem, proses agnostik)
- Bagaimana saya bisa melihat semua perpustakaan bersama dimuat oleh suatu proses?
Anda dapat melakukan keduanya dengan lsof
. Untuk melihat proses apa yang telah dibuka atau dipetakan perpustakaan:
lsof /path/to/lib.so
dan untuk melihat file apa (termasuk pustaka bersama) suatu proses telah terbuka dan / atau dipetakan, lakukan:
lsof -p <pid>
Cara lain untuk melihat apa yang dimuat dalam suatu proses adalah dengan melihat /proc/PID/maps
file. Ini menunjukkan semua yang dipetakan ke dalam ruang alamat Anda, termasuk objek bersama yang dipetakan.
lsof
tidak memiliki fungsionalitas yang dibutuhkan.adalah cara yang bagus untuk menjelajahi semua yang
/proc/PID/maps
disebutkan oleh Rich sekaligus. Output sampel:Selanjutnya
awk
dan bash-fu dapat memperbaiki output lebih lanjut.Metode ini juga menunjukkan perpustakaan dibuka dengan
dlopen
, diuji dengan pengaturan minimal ini diretas dengansleep(1000)
Ubuntu 18.04.sumber
Anda dapat menjalankan perintah berikutnya dengan root dan melihat daftar lengkap,
Ini untuk pengguna yang tidak memiliki lsof.
sumber