原创 通用代码调试方法 (Keil, VCC)

2011-11-14 11:30 4580 22 26 分类: MCU/ 嵌入式

调试代码一般需要定位问题,这里给出一个解决方案,

一般的编译器均支持这些宏指令。

 

#define DEBUG_WALT_1113     1

extern void log_trace_moniter(char* fmt, ...);


#if DEBUG_WALT_1113
extern CHAR* log_trace_memory(void);
extern CHAR* log_trace_time(void);

#define trace_memory_moniter()   log_trace_moniter("[%s@%05d]%s: %s\r\n", __FILE__, __LINE__, log_trace_time(), log_trace_memory())

#define trace_fmt0(fmt)              log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time())
#define trace_fmt1(fmt, p1)          log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1)
#define trace_fmt2(fmt, p1, p2)      log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1, p2)
#define trace_fmt3(fmt, p1, p2, p3)  log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1, p2, p3)
#define trace_fmt4(fmt, p1, p2, p3, p4)    log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1, p2, p3, p4)
#define trace_fmt5(fmt, p1, p2, p3, p4, p5)   log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1, p2, p3, p4, p5)
#define trace_fmt6(fmt, p1, p2, p3, p4, p5, p6) log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1, p2, p3, p4, p5, p6)
#define trace_fmt7(fmt, p1, p2, p3, p4, p5, p6, p7) log_trace_moniter("[%s@%05d]%s: " fmt, __FILE__, __LINE__, log_trace_time(), p1, p2, p3, p4, p5, p6, p7)
#else
#define trace_memory_moniter()  

#define trace_fmt0(fmt)             
#define trace_fmt1(fmt, p1)         
#define trace_fmt2(fmt, p1, p2)    
#define trace_fmt3(fmt, p1, p2, p3) 
#define trace_fmt4(fmt, p1, p2, p3, p4)    
#define trace_fmt5(fmt, p1, p2, p3, p4, p5)   
#define trace_fmt6(fmt, p1, p2, p3, p4, p5, p6)
#define trace_fmt7(fmt, p1, p2, p3, p4, p5, p6, p7)

#endif

文章评论4条评论)

登录后参与讨论

walnutcy_696810119 2011-12-3 14:29

利用编译器的宏来定位代码的错误,可以显示出文件名及行数

用户1450745 2011-11-22 11:06

看不太懂。

walnutcy_696810119 2011-11-17 21:51

debug与release的差别是需要打印特殊变量、文件行号等,这里给出一个基本的参考,通过宏来控制是否为发布版; 对于平台,用户需要实现一个答应函数,可以是屏幕上的,也可以是文件记录

用户1497082 2011-11-17 08:12

楼主能不能介绍得清楚点,怎么使用呢?
相关推荐阅读
walnutcy_696810119 2012-11-21 08:37
Linux下使用smartCOM调试串口
在Windows下的串口调试一直使用sscom,在Linux下只找到一个cutecom,用了几次,很不喜欢,就着手开发了一款自己的串口调试工具,smartCOM。 smartCOM介绍:http...
walnutcy_696810119 2012-03-29 18:12
【博客大赛】原创--测量基础:什么是测量
写在正文之前: 适逢EDNChina搞活动,而我本人也算在测量业工作,就一起作下笔记吧。若有错误,请大家一起斧正。笔者写本文一方面是梳理知识,另一方面也希望与大家探讨有关测量的知识、应用等,希...
walnutcy_696810119 2011-12-20 18:29
GLONASS 15年来,首次实现24颗星在轨可用
  EDN的博客改版后,不太好用,在SINA重开一个,不过重点改为关注GNSS行业新闻 http://blog.sina.com.cn/s/blog_7420cd1701012en9....
walnutcy_696810119 2011-12-20 17:49
逆向工程第一步:通信协议分析
工程中常有这样的事,想分析下其他知名公司产品中的通信协议,以便生产设计兼容产品。 1) 逆向工程,首先要了解产品,知己知彼,百战不怠;     去年受命想仿一款GARMIN的导航盒,但无法...
我要评论
4
22
关闭 站长推荐上一条 /2 下一条