假设开发者希望知道上文提到的libhello.so库中是否定义了 ppp():
$nm libhello.so |grep ppp U
如果可执行文件包括调试符号,那么确定哪一行代码导致了问题是可以做到的。对该地址和可执行文件使用addr2line 程序,如下所示:
addr2line -e simple 0x400618 |
将返回:
/home/devuser/simple.c:34 |
要研究该问题,可以检查第 34 行。
关于addr2line的一点补充:如果可执行文件中没有包括调试符号,您将获得??:0 作为响应。