嵌入式c语言调试开关的技巧有哪些 嵌入式c语言调试开关方法分享-环球新要闻
- 百文网
- 2023-04-10 08:42:50
嵌入式c语言调试开关的技巧
【资料图】
在调试程序时,经常会用到assert和printf之类的函数,我最近做的这个工程里就有几百个assert,在你自认为程序已经没有bug的时候,就要除去这些调试代码,应为系统在正常运行时这些用于调试的信息是无用的,而且会占用时间和空间。怎么删除呢,以下仅供参考!
下面给出最简单的一种方法:
#define DEBUG
#ifdef DEBUG
#define PRINTF(x) printf x
#else
#define PRINTF(x) ((void)0)
#endif
使用时,PRINTF(( "Hello World!" ));
注意这里是两个括号,一个会报错的
不使用时,直接将"#define DEBUG"屏蔽掉
另外一个调试时常用的`方法是assert,还是在一个头文件里,这里用的是STM32函数库的例子
#ifdef DEBUG 1
/************************************************************
* Macro Name : assert_param
* Description : The assert_param macro is used for function"s parameters check.
* It is used only if the library is compiled in DEBUG mode.
* Input : - expr: If expr is false, it calls assert_failed function
* which reports the name of the source file and the source
* line number of the call that failed.
* If expr is true, it returns no value.
* Return : None
************************************************************/
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
/* Exported functions -------------------------------------*/
void assert_failed(u8* file, u32 line);
#else
#define assert_param(expr) ((void)0)
#endif/* DEBUG */
//assert_failed此函数要自己定义
#ifdef DEBUG
/************************************************************
* Function Name : assert_failed
* Description : Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* Input : - file: pointer to the source file name
* - line: assert_param error line source number
* Output : None
* Return : None
************************************************************/
void assert_failed(u8* file, u32 line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d", file, line) */
/* Infinite loop */
while (1){
}
}
#endif
关键词:
- 嵌入式c语言调试开关的技巧有哪些 嵌入式c2023-04-10
- 微距摄影入门知识分享 微距摄影技巧有哪些2023-04-10
- 世界观速讯丨诚信的作文怎么写 诚信的作文2023-04-10
- 热点聚焦:种花让生活更美好作文怎么写 种2023-04-10
- 悲惨世界读后感怎么写 悲惨世界读后感范文2023-04-10
- 描写那拉提草原的满分作文有什么 描写那拉2023-04-10
- 视讯!教案的教学内容怎么写 教案的教学内2023-04-10
- 小学三年级数学上册应用题分享 小学三年级2023-04-10
- 初中数学试题练习题分享 初中数学试题练习2023-04-10
- 检讨书怎么写 检讨书模板分享2023-04-10
- 半支烟经典散文分享 半支烟经典散文分享赏2023-04-10
- 出口商品英语词汇整理 出口商品英语词汇分2023-04-10
- 临床助理医师《生理学》知识要点汇总 临床2023-04-10
- 三国谋士真实排名介绍 三国谋士真实排名分2023-04-10
- 西藏基本建成覆盖全区的藏医药服务体系 焦2023-04-10
- 今日观点!水运工程全面加快建设(经济新方2023-04-10
- 动态焦点:今年一季度中小企业发展指数升至82023-04-10
- 农村义务教育本科以上学历专任教师达76.01%2023-04-10
- 世界速看:雨季不再来初中作文怎么写 雨季2023-04-10
- 主板注册制首批10只新股今上市-天天播资讯2023-04-10
- 三年级下册数学试题有哪些 三年级下册数学2023-04-10
- 菠菜的做法有什么 美味好吃的菠菜做法有哪2023-04-10
- 暨南大学在全国排名第几 暨南大学优势专业2023-04-10
- 环球动态:刚果盆地的气候类型是什么 刚果2023-04-10
- 【环球热闻】that引导的定语从句是什么 th2023-04-10
- 半岛聚焦丨再赴樱花之约!刚刚过去的这个周2023-04-10
- 清明节银行放假吗?银行清明节能办理业务吗2023-04-10
- 百事通!ipad连接wifi提示无法加入网络是怎2023-04-10
- 天涯织女演员表介绍 天涯织女的主演是谁?2023-04-10
- 衔环结草是什么意思 衔环结草的含义是什么?2023-04-10