嵌入式C语言技巧--debug打印信息输出使能

嵌入式调试中,使用串口打印调试信息是一个非常常用的手段。而这些嵌入在功能性代码中的调试代码,在正式版的程序中往往需要去掉,在问题定位时又需要加进来。

使用宏定义可以方便的解决这个问题:

config.h文件中:

/* choose to enable or disable debug information print via uart */
#define DEBUG_INFO          1    /*  set to ‘1‘ to enable print debug information */
#define dbg_current_types   1    /*  set to ‘1‘ to enable print debug information */

#define debug_printf(type,...)         if (((type) & dbg_current_types))  {xil_printf (__VA_ARGS__); }

C文件中使用如下:

debug_printf(DEBUG_INFO,"This is a debug information!\r\n");
时间: 2024-10-13 23:32:43

嵌入式C语言技巧--debug打印信息输出使能的相关文章

C# DEBUG 调试信息打印及输出详解

https://blog.csdn.net/aaaaatiger/article/details/5583301 1.debug只在[debug模式下才执行](运行按钮后面的下拉框可选) 2.debug提供了许多调试指令,如断言         System.Diagnostics.Debug.Assert(false,"信息");         将出现一个对话框 3.debug可以自定义监听器     (下例将信息存入磁盘文件)     System.Diagnostics.Tex

在VC6的debug框里面输出版权信息

在VC6的debug框里面输出版权信息,效果如下: 原理是: 新建一个批处理文档:如:"info.bat",放置到工程目录下[和dsw同级] @echo ===本程序作者是不要呵呵=== @echo -------这里的输出来自于批处理文件------ @echo -------这里可以输出版权信息------ @echo ......如遇到任何技术问题请联系作者...... 然后依次打开菜单 [工程]-[设置],在“常规”.“调试”.“C/C++"...右侧,找到"

release下不输出NSLog打印的内容,debug下才输出。

软件运行越来越慢,突然在想,是不是因为NSLog,太多的原因.因为自己总是喜欢用NSLog打印出变量,然后,在进行调试程序,找Bug. 网上查找资料,果然,和这个还是有点关系的. 直接上代码,使其在release下不输出NSLog打印的内容,debug下才输出. 要注意,这部分代码是要写在prefix.pch中的. // 在debug模式下输出NSLog,在release模式下不输出NSLog #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_

嵌入式开发中常见3个的C语言技巧

Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光能指向变量.字符串.数组,还能够指向函数.在C语言中允许将函数的入口地址赋值给指针.这样就可以通过指针来访问函数.还可以把函数指针当成参数来传递.函数指针可以简化代码,减少修改代码时的工作量.通过接下来的讲解大家会体会到这一点的. /*函数指针简单讲解 *通过指向函数的指 *针调用比较两个数 *大小

嵌入式C语言自我修养 13:总结

13.1 总结 前面12节的课程,主要针对 Linux 内核中 GNU C 扩展的一些常用 C 语言语法进行了分析.GNU C 的这些扩展语法,主要用来完善 C 语言标准和编译优化.而通过 C 标准的发展过程我们又发现,对于一些编译器扩展的一些特性,或者其它编程语言(如:C++)中的好的特性和语法,C 标准也会适时地吸收进来,作为新的 C 语言标准. 在 GNU C 的这些扩展语法中,attribute 和宏定义是两大特色.在嵌入式底层系统中,尤其是 Linux 内核和 U-boot 中,大量使

嵌入式C语言自我修养 08:变参函数的格式检查

8.1 属性声明:format GNU 通过 attribute 扩展的 format 属性,用来指定变参函数的参数格式检查. 它的使用方法如下: __attribute__(( format (archetype, string-index, first-to-check))) void LOG(const char *fmt, ...) __attribute__((format(printf,1,2))); 我们经常实现一些自己的打印调试函数.这些打印函数往往是变参函数,那编译器编译程序时

WPF 使用Console.Write打印信息到控制台窗口中

WPF中使用Console.Write函数来打印信息是没有意义的,因为并没有给其输出字符的窗口.对于桌面程序来说,这是十分合理的,然而有时为了方便调试,在程序编写过程中打印出信息给程序员看还是必要的,利用Windows的API,在DEBUG的时候打开一个控制台窗口以供信息打印显示. 创建一个管理类 public static class ConsoleManager { private const string Kernel32_DllName = "kernel32.dll"; [D

[MapReduce]MapReduce调试:在TaskTracker节点上查看打印信息

业务背景 MapReduce编程模型的线上调试并不方便,它不像本地Java程序那样可以很方便地及时看到输出结果,本文将提供一种比较简捷的方式对MapReduce Job进行调试. 分析 完全并行模式下的MapReduce Job,使用 System.out.println("xxx"); 并不会打印到控制台上,因为完全并行模式下的MR Job是分布在集群上各个TaskTracker节点上运行的,因此,使用System.out.println的结果,是将打印信息打印到实际运行的Slave

NSLog打印信息的从新设置

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度上影响应用的性能,针对这种问题可以写一些宏来控制这些调试信息的输出. 在release版本禁止输出NSLog内容 因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉. 我们可以在发布版本前先把所有NSLog语句注