gdb、gdb_server、jlink关系如下
原文
https://blog.csdn.net/qq_40833810/article/details/106713462
1 windows端打开segger jlink GDB Server,如下设置
此时jlink已经连上,gdb等待连接
2.在wsl中,如下命令,连上gdb
…/…/…/buildtools/toolchains/gcc-arm-none-eabi/bin/arm-none-eabi-gdb nuttx
3 命令
c
使程序继续往下运行,直到再次遇到断点或程序结束
ctrl + c
使正在运行的程序停下来
b
设置断点,例如b 行号/函数名
b i=1 当i等于1时停止
info b
查看断点
info r
查看cpu内核寄存器
info locals
查看当前函数中各局部变量的值
d 断点号
删除断点
p 表达式
其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。
backtrace [-full] [n]
当前调试环境中所有栈帧的信息
n:一个整数值,当为正整数时,表示打印最里层的 n 个栈帧的信息;n 为负整数时,那么表示打印最外层 n 个栈帧的信息;
-full:打印栈帧信息的同时,打印出局部变量的值。
watch 变量/表达式
监控变量或表达式的变化,只有当被监控变量(表达式)的值发生改变,程序才会停止运行
类似的还有
rwatch 命令:只要程序中出现读取目标变量(表达式)的值的操作,程序就会停止运行;
awatch 命令:只要程序中出现读取目标变量(表达式)的值或者改变值的操作,程序就会停止运行。
但是rwatch和awatch需要硬件支持
set var key = value
设置变量key的值为value
layout:用于分割窗口,可以一边查看代码,一边测试:
layout src:显示源代码窗口
layout asm:显示反汇编窗口
layout regs:显示源代码/反汇编和CPU寄存器窗口
layout split:显示源代码和反汇编窗口
layout next:切换到下一个布局
layout prev:切换到上一个布局
info win : 显示窗口大小
focus cmd/src/asm/regs/next/prev :切换当前窗口
winheight name +/- line :调整name窗口的高度
Ctrl + L:刷新窗口
Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口