Hallo, ich suche eine Moeglichkeit, zur Laufzeit eine Liste aller Symbole zu erhalten, die mittels lib=dlopen("libTest.so",RTLD_LAZY); geladen wurden. Mit fun=dlsym(lib,"TestFunction"); kann ich zwar einzelne Symbole abfragen, aber wie finde ich heraus, welche noch vorhanden sind? Das (linux) Tool 'nm' gibt mir zwar diese Information (nm -D libTest.so), aber es muss doch auch aus dem laufenden Programm heraus moeglich sein, ohne nm auszufuehren und dessen Ausgabe muehsam zu interpretireren? Danke Vlad
Interessant, kann vielleicht nützlich sein. Folgendes habe ich gefunden, eventuell kommst damit weiter: dl_iterate_phdr - walk through list of shared objects Schau Dir mal die manpage dazu an, da ist auch ein Beispiel dabei. Würde mich interessieren was dabei rauskommt. Gruß Bobby
>dl_iterate_phdr - walk through list of shared objects
Ja, das Beispiel habe ich auch gefunden und ausprobiert. Es listet alle
"shared objects" auf (das sind anscheinend die libraries selbst), die
das Programm linkt. Damit entspricht es 'ldd', es listet aber nicht die
Funktionen (und sonstigen Symbole) jeder einzelnen Library auf.
Die FreeBSD-manpage von dlopen(3) verweist auf dlinfo(3), das mir auf den ersten Blick danach aussieht, als würde es die gewünschten Informationen liefern können (request RTLD_DI_LINKMAP). Gibt's das bei Linux auch?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.