使用vscode就是要自己配置,需要把各种小功能一点点集成上来。
工具链:vscode+arm-none-eabi-gcc+jlink-gdbserver
调试插件:Cortex-Debug
(1)Debug监控变量16进制
调试控制台,为gdb输入命令
set output-radix 16
(2)Debug时显示反汇编代码
调试时如果要看汇编代码,ctrl+shift+p打开命令面板输入:
Cortex-debug: Show disassembly
为方便使用,已经为其设置快捷键alt+s。
(3)Debug时显示mem状态
方法1:调试时如果要看内存状态,ctrl+shift+p打开命令面板输入:
Cortex-debug: View Memory
然后输入开始地址与监控长度,这里开始地址可以用&var形式给出,直接就到达想看的变量位置。
为方便使用,已经为其设置快捷键alt+m。
方法2:使用jlink全家桶软件里面的jmem。
(4)Debug时修改内存值
无法使用鼠标点击交互式修改,通过gdb命令实现:
set {int}0x2000a0 = 4
(5)RTT优化
RTT代替串口printf,目前已经作为日常工具,但是调试过程结束时,cortex-debug会杀死jlink 后台,如果正在使用JLinkRTTViewer也会死掉,再次启动调试也就没printf输出了,还要重新启动JLinkRTTViewer,有些麻烦。
方法1:建立task启动JLinkGDBServerCL,停止调试也不会被杀死,原因是启动了两次jlink后台,停止调试杀掉的后台和RTT后台没关系。
优点是printf会打印在vscode的终端窗口,整体性好。
方法2:使用Kitty代替JLinkRTTViewer,telnet连接localhost:19021,注意要设置自动重连。
这样,jlink后台被杀死后,Kitty自动断开,重新启动调试,Kitty自动重连,优点是有独立窗口,感觉也不错。