我正在使用 gcc 4.71 工具链为 STM32F4 (ARM Cortex-M4) 微控制器编译我的 c 程序。在我的程序被编译和链接后(我有 .elf 文件),我想为每个源代码行提取第一条指令的地址。目前我正在尝试通过解析反汇编文件来做到这一点 - 例如,在下面我得到了 main.c 中第 41 行的 adr 0x8000c44。
还有其他更方便的方法如何使用一些 gcc 工具获取这些信息吗?
示例反汇编文件:
c:\a_test2/main.c:41
8000c44: b580 推 {r7, lr}
我用来编译和链接的命令行:
c:\Yagarto471\bin\arm-none-eabi-gcc.exe -c -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections -Wall -Wextra -Wno-unused-parameter -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-but-set-variable -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=app.lst -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DUSE_STM32F4_DISCOVERY -DUSE_USB_OTG_FS -DHSE_VALUE=8000000 - MD -MP -MF app.d -I。-Iinc -save-temps -c main.c -o main.o
c:\Yagarto471\bin\arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -Tstm32f4xx.ld -g -Wl,-Map=Map.map,--cref,--no-warn-mismatch - wl,--gc-sections -nostartfiles startup\startup_stm32f4xx.o startup\stm32f4_discovery.o startup\system_stm32f4xx.o startup\stm32f4xx_rcc.o startup\stm32f4xx_gpio.o startup\stm32f4xx_tim.o startup\misc.o startup\stm32f4xx_usart.o startup \syscalls.o main.o sys.o intr.o vars.o debug.o lib.o -o stm32f4_temp.elf