1. arm-none-eabi-addr2line
arm-none-eabi-addr2line -ife ./nuttx/vela_ap.elf 0x0c177186
arm-none-eabi-addr2line 是一个用于将地址转换为文件名和行号的工具,用于在嵌入式系统中调试程序时定位代码位置。命令的一般格式是:
arm-none-eabi-addr2line -e <可执行文件> <地址>
- -e 参数指定可执行文件。
- -i 选项,该工具会显示关于输入文件的详细信息
- -f 选项,它将显示完整的函数名称
- <可执行文件> 是你要查找代码位置的可执行文件。
- <地址> 是要转换为文件名和行号的十六进制地址。
举例来说,如果你有一个名为 example.elf 的可执行文件,并且想要查找地址 0x12345678 对应的代码位置,你可以运行以下命令:
arm-none-eabi-addr2line -e example.elf 0x12345678
2. arm-none-eabi-objdump
arm-none-eabi-objdump --source --all-headers --demangle --file-headers --line-numbers --wide "test.elf" > "test.lst"
这条命令是用来对名为"test.elf"的二进制文件进行反汇编并生成一个包含源代码、头文件、行号等信息的列表文件"test.lst"。
arm-none-eabi-objdump: 这是一个用于反汇编目标文件的工具。
- –source: 表示在列表文件中包含反汇编后的源代码。
- –all-headers: 表示在列表文件中包含所有的头文件信息。
- –demangle: 表示对C++符号进行解缠。
- –file-headers: 表示在列表文件中包含有关文件本身的头信息。
- –line-numbers: 表示在列表文件中包含源代码行号。
- –wide: 表示在列表文件中使用宽格式输出。
执行这条命令后,生成的"test.lst"文件将包含了"test.elf"二进制文件的反汇编内容、源代码、头文件信息、行号等详细信息。这个列表文件可以帮助你更好地理解和调试这个二进制文件的内容。