![](/img/trans.png)
[英]How to get network interface name from IPv6 address in linux in a C program?
[英]How to Get A Function Name From a Library and Address in Linux C
我正在学习如何使用dlopen,dlsym等函数来获取给定库中给定函数的地址,但是我该如何做相反呢? 例如,如果我知道我的进程当前在libgtk-x11-2.0.so.0中的gtk_main + 0xa7处,那么如何确定该函数是什么?
谢谢您的帮助!
如果知道与对象空间有关的地址,则可以使用nm
。 在我自己的libgtk-x11上……
# nm -D /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.23
000000000006da20 T gtk_about_dialog_get_artists
000000000006d800 T gtk_about_dialog_get_authors
000000000006d260 T gtk_about_dialog_get_comments
…
动态符号需要选项-D
,您应该只看一下“ T”符号(在对象内部“确实”)。 当然,这些地址与对象有关,而与程序中的空间无关。
请注意,您只会获得条目的起始地址,因此,如果在函数内获得地址,则必须计算最近的地址。 有关其他可用数据,请参见nm
页。
您至少可以通过查看/ proc / PID / maps来找到给定程序的对象映射位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.