如果你想把“映射到哪个内核函数”做到 100% 精确(显示出 ptr 实际指向的符号名),最直接的办法是:生成/拿到带符号的内核 ELF,然后用 nm/addr2line 对照 ptr 地址反查符号名。你要我顺便帮你在当前构建产物里定位内核 ELF/符号文件并给出反查命令吗?
交叉编译工具链已经安装了,在路径路径在D:\unirtos-toolchain\bin下
回答
我先在当前 PowerShell 会话里把 bin 临时加入 PATH,确认 where unirtos.exe 能找到,然后直接跑一次 buildlib_unirtos.bat 去生成 qos_build/build/ap_application.elf
Set-Location 'D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225' $env:Path = 'D:\unirtos-toolchain\bin;' + $env:Path cmd /c "where unirtos.exe" .\buildlib_unirtos.bat经过上面的命令,脚本已经编译成功,生成的elf在D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG下,继续执行反汇编
AI
我先确认 DBG 目录里具体是哪一个 ELF(文件名可能不止一个),然后用 arm-none-eabi-objdump 生成反汇编到文本文件(避免终端输出爆炸),再按需要给你“按符号/按地址”精确反汇编的命令。
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打印
PS D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225> Set-Location 'D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG'
PS 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
PS D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG> cmd
/c "where arm-none-eabi-objdump.exe"
D:\unirtos-toolchain\gcc-arm-none-eabi-10.2.1\bin\arm-none-eabi-objdump.exe
PS D:\TBOX\SDK\QSR01A0