GDB+Jlink调试注意事项

1.在汇编调用C的一步要用“Step in”,不要用“Step Over”,因为main对于汇编来说只是一个函数。会造成程序全速运行,不能单步调试。对于汇编代码,“Step in“Step Over”是一样的效果,所以在进行main函数之前最好都用“Step in”。


2. 在源代码中只修改了Makefile和链接脚本时候,要先清理一下再重新编译。因为make的潜规则是只检测源代码是否改变。会遇到如下提示:

**** Build of configuration Default for project mmuv1 ****


make all 
make: Nothing to be done for `all'.


3.Cannot access memory at address 0xbfea4450 和 0x00000000 in ?? () 

以前也遇到过这个问题,没有记录,最近一次遇到是在S5PV210上在写DDRAM初始化脚本的过程中遇到,并解决。是DDRAM没有完全初始化好。

见这里:http://my.csdn.net/kangear/code/detail/54584


4.Target request failed: Infinite loop detected


翻译过来就能理解,这是一个无限循环,再往下单步运行没有意义。就提示了如下信息。


5.gdbinit脚本中break _start设置断点,却没有设置到_start链接地址对应的行号,而是下一条指令对应的行号


解决过程:
       通过readelf -wl led.elf > led_elf.line的内容可以看到:
 Line Number Statements:
  Extended opcode 2: set Address to 0x20000000
  Special opcode 13: advance Address by 0 to  0x20000000 and Line by 8 to  9
  Special opcode 36: advance Address by 4 to  0x20000004 and Line by 3 to  12
  Special opcode 34: advance Address by 4 to 0x20000008 and Line by 1 to 13
  Special opcode 34: advance Address by 4 to 0x2000000c and Line by 1 to 14
  Special opcode 35: advance Address by 4 to 0x20000010 and Line by 2 to 16
  Special opcode 35: advance Address by 4 to 0x20000014 and Line by 2 to 18
  Special opcode 35: advance Address by 4 to 0x20000018 and Line by 2 to 20
  Advance PC by 12 to 0x20000024
  Extended opcode 1: End of Sequence
链接地址对应的行号是没有问题的,说明编译器没有问题。arm-linux-gdb发出的"break _start"应该也没有什么错误。jlinkGDBServer在处理结果上令人咋舌了。向后偏移了一条指令。

6.Cortex-A8在调试汇编时的“Step Over”
   Cortex-A8在调试汇编的时候,是支持的"Step Over","Step Into","Step Return",ARM9只有 "Step Into"的,"Step Over"和"Step Into"功能是一样的。

7.Remote connection closed
  调试时候会出现这个错误。


8.当你的程序不能停到断点处的时候,从以下两处找原因。

   1> 编译程序的时候是否加了-g,生成可调试的应用程序。否则arm-linux-gdb找不到调试的符号表。
   2> gdbinit脚本中是否有break



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值