调试方法工具
总结下常用调试工具、方法
jiang_2018
这个作者很懒,什么都没留下…
展开
-
GDB格式化打印结构体
参考GDB pretty-printset print pretty onGDB 打印数组索引set print array-indexes on例子#include <stdio.h>#include <stdlib.h>typedef struct{ int a; char*str; int b;}t1_t;typedef struct{ int a; int b; char*str1; int c; int arr1[10]; in原创 2022-05-20 17:04:09 · 2953 阅读 · 0 评论 -
GDB调试宏
参考GDB需要调试宏只需用-g3选项编译-g 默认选项,同-g2-g0 不生成任何调试信息,和编译时不加“-g”是一样的。-g1 生成最少量的调试信息,这些信息足够用来通过backtrace查看调用栈符号信息。主要包括了函数声明、外部变量和行号等信息,但是不包含局部变量信息。这个选项比较少用。-g2 生成足够多的调试信息,可以用GDB进行正常的程序调试,这个是默认选项。-g3 在-g2的基础上产生更多的信息,如宏定义。...原创 2022-05-20 16:34:28 · 748 阅读 · 0 评论 -
GDB动态打印
参考GDB Dynamic Printf在不修改程序源码的情况下,随时在程序的任何地方添加格式化打印格式dprintf location,format string,arg1,arg2,...例子#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]){ int i,a,b; a = 1; b = 2; for(int i=0;i<5;i++) { a原创 2022-05-20 16:05:33 · 252 阅读 · 0 评论 -
GDB自定义命令,打印链表
参考gdb打印链表时需要自己一个一个打印比较麻烦,可以写个命令自动打印,提高效率例子list.c#include <stdio.h>#include <stdlib.h>typedef struct test_type{ int value; char str[64]; struct test_type *next;}type_t;type_t *type_new(int value){ type_t *type = (type_t*)malloc(s原创 2022-05-20 15:10:03 · 671 阅读 · 0 评论 -
ozone调试
对于keil编译的工程没法用gdb调试(我没发现方法),那就用Ozone调试,官网https://www.segger.com/products/development-tools/ozone-j-link-debugger/下面演示怎么建工程1 创建新工程2.选择设备3.选择jlink4.选择axf文件也可以手动输入Reset的pc和sp的值5,如下警告是发现了你连接的设备运行在FreeRTOS但是没找到插件,先直接继续6.保存工程7.编辑后缀.jdebug的文件,把F原创 2022-05-11 16:06:15 · 3097 阅读 · 1 评论 -
jlink_gdb_server
gdb、gdb_server、jlink关系如下原文https://blog.csdn.net/qq_40833810/article/details/1067134621 windows端打开segger jlink GDB Server,如下设置此时jlink已经连上,gdb等待连接2.在wsl中,如下命令,连上gdb3 命令c使程序继续往下运行,直到再次遇到断点或程序结束ctrl + c使正在运行的程序停下俩b设置断点,例如b 行号/函数名info b查看断点in原创 2022-05-10 15:23:39 · 2533 阅读 · 0 评论