代码调试之串口打印

以前习惯用jlink调试代码,最近发现jlink老是出现问题,丢固件、无法仿真等等,甚是苦恼,无奈用串口打印的方式来替代jlink调试;

串口调试需要使用到半主机模式,具体的调用代码如下:

#pragma import(__use_no_semihosting)

struct __FILE
{
    int handle;

};

FILE __stdout;

void _sys_exit ( int x )
{

    x = x;
}

int fputc ( int ch, FILE *f )
{
    while ( USART_GetFlagStatus ( USART2, USART_FLAG_TC ) == RESET );

    USART_SendData ( USART2, ( uint8_t ) ch );
    return ch;
}

之后便可以使用串口(串口2)进行打印数据了,数据直接可以显示到PC端或者其他串口接口设备,为方便调试添加如下调试信息:

#define DEBUG_PRINT_INFO(...) printf(__VA_ARGS__)
#define DEBUG_PRINT_VAR(X, ...) printf("file: "__FILE__",function: %s"", Line: %d:"X"\r\n",__FUNCTION__,__LINE__,##__VA_ARGS__) 

第一个函数只是打印我们自定义的信息,第二个函数除了可以打印我们自定义的信息,还可以打印当前运行到的文件、函数名、行号信息,方便了问题查找。

时间: 2024-10-06 07:20:13

代码调试之串口打印的相关文章

cotex_m3内核提供的ITM串口打印调试

cotex_m3内核的ARM提供了ITM串口打印观测的功能,可以不用ARM单片机自己的串口就可在开发时候串口打印调试.节约了宝贵的内部资源,同时也为调试提供了方便.使用方法如下: 1 将下面的SWO_Printf.c加入到工程中 /*SWO_Printf*/#include <stdio.h>/*1 ÔÚkeil mdkÖÐÑ¡ÔñʹÓÃswo; 2http://blog.csdn.net/xiaolei05/article/details/8526021 *///Add ITM Port

斑马105SLPlus串口打印二维码

1.根据说明书调试硬件,校准介质还有色带(很重要),我自己搞了好几天才搞明白. 2.设置好参数,比如打印介质连续.非连续,热敏还是热转质 3.打印机上电后悔自动校准,校准成功后就可以直接通过串口打印,设置好通讯参数 4.主要代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq

GDB代码调试与使用

GDB代码调试与使用 Linux下GDB调试代码 源代码 编译生成执行文件 gcc -g test.c -o test 使用GDB调试 启动GDB:gdb test 从第一行列出源代码:list 直接回车表示,重复上一次命令 设置断点,在源程序16行处:break 16 设置断点,在函数func()入口处:break func 查看断点信息:info break 运行程序:run 在断点处停住 单条语句执行:next 继续运行程序:continue[程序输出:result[1-100]=5050

我的女神——简洁实用的iOS代码调试框架

我的女神--简洁实用的iOS代码调试框架 一.引言 这篇博客的起源是接手了公司的一个已经完成的项目,来做代码优化,项目工程很大,并且引入了很多公司内部的SDK,要搞清楚公司内部的这套框架,的确不是件容易的事,并且由于这个项目是多人开发的,在调试阶段会打印出巨量的调试信息,使得浏览有用信息变的十分困难,更加恐怖的是,很多信息是SDK中的调试打印,将这些都进行注销是非常费劲甚至不可能的事,于是便有了这样一些需求:首先,我需要清楚了解各个controller之间的跳转关系,需要快速的弄清每个stroy

关于代码调试de那些事

原文出处:http://www.wklken.me/posts/2014/11/23/how-to-debug.html 关于代码调试de那些事 1.你得明白你在做什么, 保持清醒 2.想清楚了再写代码 3.关于脚手架代码 4.写完一段代码第一时间自己review一下 5.review中注意, 代码是抠过来的么? 6.搞明白问题的表现是什么(症状) 7.调试过程中, 需要时刻注意 8.环境/数据一致性 9.先不要动代码, 假设代码是正确的 10.首先要怀疑自己 11.对于莫名其妙的问题, 多试几

【转】Python 代码调试技巧

转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 python debug 相关工具进行 debug. 使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能

关于Python代码调试的问题

关于Python代码调试的问题使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,下面结合具体的实例讲述如何使用 pdb 进行调试.import pdb   a = "aaa" pdb.set_trace()   b = "bbb" c = "ccc" fin

python代码调试

http://blog.csdn.net/pipisorry/article/details/45190851 trace模块可以监控Python执行程序的方式,同时生成一个报表来显示程序的每一行执行的次数.这些信息可以用来发现未被自动化测试集所覆盖的程序执行路径,也可以用来研究程序调用图,进而发现模块之间的依赖关系.编写并执行测试可以发现绝大多数程序中的问题,Python使得debug工作变得更加简单,这是因为在大部分情况下,Python都能够将未被处理的错误打印到控制台中,我们称这些错误信息

用VScode代码调试Python

Python扩展支持许多类型的Python应用程序的调试,包括以下一般功能: 观看窗口 评估表达式 当地人 参数 扩大孩子 断点 条件断点 暂停(进入)正在运行的程序 自定义启动目录 要熟悉这些常规功能,请查看VS Code调试文章.本文仅讨论那些特定于Python的注意事项. 选择一个配置 要选择调试配置,请选择边栏中的调试视图,然后从下拉列表中选择一个选项: 在调试时,状态栏显示左下角的当前配置,当前的调试解释器位于右侧.选择配置会显示列表,您可以从中选择不同的配置: 默认情况下,调试器使用