news 2026/4/23 10:45:51

objdump、nm、addr2line命令解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
objdump、nm、addr2line命令解析

代码

Set-Location 'D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG' $env:Path = 'D:\unirtos-toolchain\gcc-arm-none-eabi-10.2.1\bin;D:\unirtos-toolchain\bin;' + $env:Path cmd /c "where arm-none-eabi-objdump.exe" arm-none-eabi-objdump.exe -d -S --demangle --line-numbers ap_application.elf > ap_application.disasm.S arm-none-eabi-objdump.exe -h ap_application.elf > ap_application.sections.txt arm-none-eabi-nm.exe -n ap_application.elf > ap_application.nm.txt # 示例:用 nm 里真实存在的符号地址 0x00a62d28(ql_rtos_task_create) arm-none-eabi-addr2line.exe -e ap_application.elf -f -C 0x00a62d28 # 同一地址反汇编一小段(避免全量) arm-none-eabi-objdump.exe -d --demangle --line-numbers --start-address=0x00a62d28 --stop-address=0x00a62d28+0x120 ap_application.elf > example_ql_rtos_task_create.disasm.txt

你这段 PowerShell 脚本的核心目的是:切换到指定的固件编译输出目录,配置 ARM 嵌入式工具链的环境变量,然后使用 ARM 官方工具链中的objdumpnmaddr2line等工具,对嵌入式固件文件ap_application.elf进行反汇编、符号分析和地址溯源,是嵌入式开发中调试固件、定位代码问题的典型操作。

下面我先整体解释脚本的作用,再重点拆解你关心的objdumpnmaddr2line命令。

脚本整体执行流程

  1. Set-Location:切换到固件文件所在的目录(DBG 目录),确保后续命令能找到目标文件ap_application.elf
  2. $env:Path:将 ARM 工具链的bin目录添加到系统环境变量Path中,让系统能找到arm-none-eabi-*系列工具。
  3. cmd /c "where arm-none-eabi-objdump.exe":验证工具是否能被系统找到(排查环境变量配置问题)。
  4. 后续的arm-none-eabi-*命令:对ap_application.elf(嵌入式固件的可执行文件)进行反汇编、符号分析、地址溯源。

核心命令详解

1. arm-none-eabi-objdump.exe(最核心的反汇编工具)

objdump是 ARM 工具链中用于分析目标文件(如.elf、.o)的工具,核心作用是将二进制的机器码转换成人类可读的汇编代码还能解析文件的段信息、符号表等

你用到的参数含义
-d
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 18:41:36

【AI】Cursor 编辑器使用指南

Cursor 编辑器使用指南 📖 目录 简介核心功能AI 交互模式模型选择快捷工具栏Web 搜索功能引用功能详解快捷键大全Agent 高级功能使用建议总结参考资源 简介 Cursor 是一款由 AI 驱动的代码编辑器,能够理解你的代码库,并通过自然语言助你更…

作者头像 李华
网站建设 2026/4/15 6:06:25

数通设备堆叠技术:iStack与CSS方案对比及应用选型

在数通网络架构中,堆叠技术是提升设备扩展性、可靠性与管理效率的核心方案,其中iStack(华为设备堆叠协议)与CSS(集群交换系统,华为高端设备堆叠方案)是业界主流的两种堆叠实现方式。结合业务口堆叠、堆叠卡堆叠、免配置堆叠等不同部署形态,二者在技术原理、性能特性、适…

作者头像 李华
网站建设 2026/4/17 21:17:30

Java死锁原因剖析:面试必看的高薪技巧!

文章目录Java死锁原因剖析:面试必看的高薪技巧!一、死锁:线程界的“抢椅子游戏”死锁的四个必要条件二、常见死锁场景:代码中的“定时炸弹”场景一:不恰当的锁顺序场景二:数据库中的锁竞争场景三&#xff1…

作者头像 李华
网站建设 2026/4/18 6:40:38

Java面试必看!如何优雅唤醒阻塞线程?

文章目录Java面试必看!如何优雅唤醒阻塞线程?一、引言二、常见问题1. 为什么不能使用Thread.stop()方法?2. 阻塞线程的常见场景三、如何优雅唤醒阻塞线程?1. 使用Interrupt机制(1)基本使用(2&am…

作者头像 李华
网站建设 2026/3/20 16:33:45

uniapp富文本rich-text

1. uniapp富文本rich-text 官方文档:https://uniapp.dcloud.net.cn/component/rich-text.html 1.1. 示例 1.1.1. richText.vue <template><view ><view class"rich-layout" ><rich-text :nodes"richText"></rich-text>&l…

作者头像 李华
网站建设 2026/4/7 13:59:56

FunASR + speech_ngram_lm_zh-cn 语音识别实战|附WebUI部署指南

FunASR speech_ngram_lm_zh-cn 语音识别实战&#xff5c;附WebUI部署指南 1. 背景与技术选型 1.1 为什么选择 FunASR&#xff1f; 在当前中文语音识别领域&#xff0c;FunASR 是由阿里云推出的一套功能完整、支持端到端推理的开源语音识别工具包。它不仅支持离线和在线模式…

作者头像 李华