c语言多源代码怎么用,使用gdb(目标分支)通过openocd调试多源(asm和c)程序

为简单起见,我假设一个源文件是一个程序集文件,其中启动例程位于另一个文件夹中,另一个文件是c文件。该方案是由下面的Makefile

PREFIX=/opt/arm/bin

LDSCRIPT=ld.script

AS_BASEN=$(basename startup.s)

C_BASEN=$(basename main.c)

ASFLAGS=-g

CCFLAGS=-g -nostartfiles

LDFLAGS=--fatal-warnings

$(C_BASEN).bin: $(C_BASEN).elf

$(PREFIX)/arm-objcopy -O binary $< [email protected]

$(C_BASEN).elf: $(LDSCRIPT) $(AS_BASEN).o $(C_BASEN).o

$(PREFIX)/arm-ld $(LDFLAGS) -T $(LDSCRIPT) $(AS_BASEN).o $(C_BASEN).o -o [email protected]

$(C_BASEN).o: $(C_BASEN).c

$(PREFIX)/arm-gcc $(CFLAGS) -c $< -o [email protected]

$(AS_BASEN).o: $(AS_BASEN).s Makefile

$(PREFIX)/arm-as $(ASFLAGS) $< -o [email protected]

建立Altough我认为我的问题是OpenOCD的的independet我州为了完整起见,OpenOCD的特定部分。在openocd守护进程启动后,我使用以下命令启动调试会话。

nc localhost 4444 <

soft_reset_halt

load_image `pwd`/main.bin $memory_location

step $memory_location

exit

eof

ddd --debugger 'arm-gdb -ex "target remote localhost:3333"'

其中$ memory_location是.text部分的第一个地址。在ddd打开后,程序停在所需的地址,我可以照常单步穿过装配线。最后我到达跳转指令,跳转到位于c文件中的函数。再过一步之后,gdb不再响应,而是执行程序。

也许你们中的一位专家可以给我一个提示,我必须改变,以便gdb在这一点切换到c源,在那里我可以继续逐步执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值