addr2line 显示??:?
时间: 2023-11-23 19:57:23 浏览: 118
根据提供的引用内容,`addr2line`显示`??:??`的可能原因是输入的地址并非其所接受的地址,`addr2line`接受的地址是相对偏移地址。需要将实际地址减去基地址,即可得到相对偏移地址,然后再使用`addr2line`工具分析。
以下是使用`addr2line`分析相对偏移地址的示例:
假设实际地址为`0x55d347e5067b`,基地址为`0x55d347e50000`,则相对偏移地址为`0x67b`。
```shell
# 使用addr2line分析相对偏移地址
addr2line -e <可执行文件路径> <相对偏移地址>
# 示例
addr2line -e test 0x67b
```
注意,`<可执行文件路径>`为需要分析的可执行文件的路径,`<相对偏移地址>`为需要分析的相对偏移地址。
相关问题
addr2line 显示??
addr2line 是一个用于将程序地址转换为源代码行号的工具。它是 GNU binutils 工具集的一部分,通常用于调试和分析崩溃或错误报告。
要使用 addr2line,您需要提供两个参数:可执行文件路径和地址。可执行文件是您想要进行源代码行转换的程序,地址是要查询的程序地址。
例如,如果您有一个崩溃报告,并且其中包含一个程序地址,您可以使用 addr2line 来查找对应的源代码行号。命令如下:
```shell
addr2line -e /path/to/executable -a <address>
```
其中,`/path/to/executable` 是可执行文件的路径,`<address>` 是要查询的地址。
addr2line 将输出与该地址对应的源代码文件和行号。这对于调试和分析崩溃很有帮助。
ubuntu addr2line显示??
Ubuntu的addr2line命令用于将地址转换为文件名和行号。使用addr2line命令时,如果它显示"??",则表示无法找到与给定地址对应的文件名和行号。
这可能有几个原因:
1. 编译时未包含调试信息:如果在编译源代码时没有使用调试标志(如-g),则编译器会删除调试信息。在这种情况下,addr2line将无法找到文件名和行号信息。
2. 地址无效或不在可执行文件中:如果给定的地址无效或不在可执行文件中,addr2line也无法找到相应的文件名和行号信息。
3. 可执行文件已经被修改:如果可执行文件已经被修改,可能会导致addr2line无法正确解析地址。
请确保在编译源代码时包含了调试信息,并且使用正确的地址进行测试。
阅读全文