ARM DS-5 断点设置及常用Debug 命令

1.1 DS-5 Debug 方法梳理

通常在调试过程中需要打断点来进行单步调试,这个时候可以按照下面步骤来进行:

  • 在使用 DS-5 Debug 之前需要先 load 所编译的 elf 文件:

     设置好路径:

    1.2.1 DS-5 设置断点 Debug

    在上面完成 elf 文件的 load 及 路径设置后,我们就可以使用DS-5进行设置断点进行调试了。下面以 在 i2c_debug.c 中的 i2c_debug函数中

    简单设置一个断点来介绍:

    1.2.2 DS-5 常用 Debug 命令

1)查看寄存器命令

  1. info registers
  2. R0 0x200C4EDE
  3. R1 0x000B6E24
  4. R2 0x00000067
  5. R3 0x00000073
  6. R4 0xDEADBEEF
  7. R5 0xDEADBEEF
  8. R6 0xDEADBEEF
  9. R7 0x200C5F58
  10. R8 0xDEADBEEF
  11. R9 0xDEADBEEF
  12. R10 0xDEADBEEF
  13. R11 0xDEADBEEF
  14. R12 0x00000008
  15. SP 0x200C5F58
  16. SP_MAIN 0x2001F4C8
  17. SP_PROCESS 0x200C5F58
  18. LR 0x0001970F
  19. PC 0x0005D258
  20. xPSR 0x81010000 Nzcvq_T_inactive_0
  21. PRIMASK 0x00000000
  22. BASEPRI 0x00000000
  23. FAULTMASK 0x00000000
  24. CONTROL 0x00000006


2)查看 memory/寄存器命令

  1. x/w 0x56020000
  2. 0x56020000: 0x00000000

3)查看函数栈

info stack
#0 rt_strcmp(cs = 0x200C4EE1 "get", ct = 0xB6E27 "set") at kservice.c:468
#1 i2c_debug_mode_help(argc = 5, mode = 0x200C4EDE "i2cget") at i2c_debug.c:64
#2 i2c_debug(argc = 5, argv = (char**) 0x200C601C) at i2c_debug.c:89
#3 _msh_exec_cmd(cmd = 0x200C4EDE "i2cget", length = 22, retp = (int*) 0x200C6078) at msh.c:342
#4 msh_exec(cmd = 0x200C4EDE "i2cget", length = 22) at msh.c:402
#5 finsh_thread_entry(parameter = (void*) 0x0) at shell.c:722
#6 _rt_thread_exit() at thread.c:105


backtrace -5
#2 i2c_debug(argc = 5, argv = (char**) 0x200C601C) at i2c_debug.c:89
#3 _msh_exec_cmd(cmd = 0x200C4EDE "i2cget", length = 22, retp = (int*) 0x200C6078) at msh.c:342
#4 msh_exec(cmd = 0x200C4EDE "i2cget", length = 22) at msh.c:402
#5 finsh_thread_entry(parameter = (void*) 0x0) at shell.c:722
#6 _rt_thread_exit() at thread.c:105

4)内存写操作
memory set 0x66020000 32 0x1
x/w 0x66020000
0x66020000: 0x00000001

posted @ 2024-04-11 11:28  咸鱼书生  阅读(178)  评论(0编辑  收藏  举报