addr2line.1

ADDR2LINE(1)

ADDR2LINE(1)

FreeBSD General Commands Manual

ADDR2LINE(1)

addr2line

将程序地址转换为源文件名和行号

addr2line [-a | --addresses] [-b target | --target=target] [-e pathname | --exe=pathname] [-f | --functions] [-i | --inlines] [-j sectionname | --section=sectionname] [-p | --pretty-print] [-s | --basename] [-C | --demangle] [-H | --help] [-V | --version] [hexaddress...]

addr2line 实用程序将命令行参数 hexaddress 指定的程序地址转换为其相应的源文件名和行号。如果没有给 addr2line, 参数,它将从标准输入中读取这些地址。

由参数 hexaddress 指定的程序地址使用 strtoull(3) 接受的约定进行编码。

默认情况下, addr2line 将使用可执行文件 “a.out 。” -e 选项可用于指定不同的 ELF 对象。

addr2line 实用程序可识别以下选项:

-a | --addresses

行号信息之前显示地址。

-b target | --target=target

此选项可被 addr2line 识别但被忽略。 支持它是为了与 GNU binutils 兼容。

-e pathname | --exe=pathname

使用参数 pathname 指定的 ELF 对象来转换地址。 如果未指定此选项, addr2line 将使用文件 “a.out 。”

-f | --functions

除文件和行号信息外,还显示函数名称。

-i | --inlines

如果指定的地址属于内联函数,则还显示其调用者的行号信息,递归直到第一个非内联调用者。

-j sectionname | --section=sectionname

由参数 hexaddress 指定的值将被视为在名为 sectionname 的部分中的偏移量。

-p | --pretty-print

以人类可读的方式在一行中显示行号信息。

-s | --basename

仅显示每个文件名的基本名称。

-C | --demangle

去除 C++ 名称。

-H | --help

打印帮助信息。

-V | --version

打印版本标识符并退出。

如果未指定 -f 选项, addr2line 将在单独的行上为每个指定的地址打印文件名和行号。

如果指定 -f 选项, addr2line 将打印一行,其中包含对应于程序地址 hexaddress 的函数名称,然后是包含文件名和行号的行。

如果指定 -p 选项, addr2line 将以人类可读的方式在一行上打印行号信息和函数名称。如果还指定 -i 选项, addr2line 将打印以 “(inlined by) 为前缀的调用函数信息。”

addr2line 实用程序使用 “FILENAME:LINENUMBER 格式打印文件名和行号。”

如果无法确定文件或函数名, addr2line 将在其位置打印一个问号。如果无法确定行号, addr2line 将在其位置打印一个零。

要将默认可执行文件 a.out 中的地址 080483c4 映射到源文件名和行号,请使用:

% addr2line 080483c4

要在可执行的 helloworld 中映射地址 080483c4,请使用:

% addr2line -e helloworld 080483c4

要让 addr2line 充当从其标准输入中读取地址的过滤器,请使用:

% addr2line

除了源文件和行号之外,要打印与地址对应的函数名称,请使用:

% addr2line -f 080483c4

The addr2line utility exits 0 on success, and >0 if an error occurs.

nm(1), elfdump(1), elfcopy(1), strtoull(3)

addr2line 实用程序由 Kai Wang 编写 <kaiwang27@users.sourceforge.net >

November 30, 2015

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区