Debug arm mcu with Jlink Gdb Server

 

    使用make+gcc进行编译arm muc 程序时,使用gdb可以提供类似于mdk的调试功能,本文简单介绍怎么使用gdb对arm芯片(apollo)进行调试。

    编译的时候需要给gcc编译选项加上-g,以生成包含调试信息的可执行文件,方可用gdb进行调试。

 一 运行jlink GDB server:

Debug arm mcu with Jlink Gdb Server_第1张图片

Debug arm mcu with Jlink Gdb Server_第2张图片

 

或者命令行中,运行

JLinkGDBServerCL.exe -USB -device AMAPH1KK-KBR -endian little -if SWD -speed auto -ir –LocalhostOnly

 

二 配置gdb init参数(~/.gdbinit):

set auto-load safe-path /

 

# Connect to the GDB Server

target remote :2331

monitor reset

monitor halt

monitor endian little

monitor speed auto

monitor flash device AMAPH1KK-KBR

 

gdb启动的时候,会依次执行该文件中的命令,所以可以在这个文件中添加gdb初始化命令。

 

三 启动gdb调试:

 1 调试cortex m芯片的时候,需要使用交叉工具链,所以推荐把工具链的位置添加到环境变量。Bash环境,修改~/.bashrc ~/.bashrc,添加:

   export PATH=$PATH:/g/WorkSpace/rftech_repo/Apollo3-SDK-2018.07.03/tools/gcc/win/gcc-arm-none-eabi/bin

红色部分为工具链的位置。

 

  2 启动调试前,确保板子已经连接到jlink,jlink GDB server就绪

  3 启动调试:

   arm-none-eabi-gdb output/apollo3_evk/bin/apollo3_evk.axf

 

   红色部分为包含调试信息的可执行文件, 连接成功后的输出如下:

  Debug arm mcu with Jlink Gdb Server_第3张图片

 

箭头所指的地方为gdb命令提示符,在这个地方输入调试命令。

命令分三种,target, monitor, 还有gdb自带命令。其中常用的是monitor和gdb自身命令。

  常用命令:

 monitor reset :  重置cpu。 更多的monitor命令,请输入monitor help 查看

 file xxxx.elf/axf :指定可执行文件, 启动gdb的时候可以不指定可执行文件,启动以后用file命令指定

  load : 烧录可执行文件到目标设备。

  l/list :  查看代码

  b/breakpoint (line/func/addr/*func) 在指定的位置设置断点(可以指定行号,函数,代码地址)

  c/continue  :继续执行直至下一个断点

  s : 单步执行,如果遇到函数调用,则进入函数,类似于keil的step into

  n:  单步执行,如果遇到函数调用,则跳过该函数,类似于keil的step over

 

  si: 类似于s,执行的是汇编指令的单步调试

  ni: 类似于n,执行的是汇编指令的单步调试

 

  i:   info

  bt : 查看当前的进程栈

  q : 退出调试

 

参考文档:

  Debuging with gdb:

https://www.eecs.umich.edu/courses/eecs373/readings/Debugger.pdf

http://davis.lbl.gov/Manuals/GDB/gdb.html

 

A guid to gdb:

http://www.cabrillo.edu/~shodges/cs19/progs/guide_to_gdb_1.1.pdf

你可能感兴趣的:(ARM程序)