嵌入式 Linux 程序
回帖(1)
2021-12-24 16:24:16
前言:
无论是Linux开发还是Windows或者Mac os开发,在我们开发项目的过程中,必不可少的就是调试了,特别是开发嵌入式程序,由于资源条件的限制,调试程序变得更为困难。一般常用的由两种方法:
一:打印输出(包括控制台输出和日志文件输出)
二:GDB调试器
对于Linux平台来说,GDB调试命令行界面使用起来确实很不方便。所以一般更常用的是输出日志文件的方法,下面简单记录下调试输出信息的一个小技巧:
预定义调试输出宏+封装打印函数
举个栗子:
编写一个简单的测试程序test.c,
代码如下:
#include
#define DEBUG //预定义调试宏
#ifdef DEBUG //封装打印函数
#define PRINT (printf("%s %s %d: ",__FILE__,__FUNCTION__,__LINE__),printf)
#else
#define PRINT
#endif
void run(int step){
PRINT("%s:%dn","I run 100m need: ",step);
}
int main(){
int i = 6;
PRINT("%sn","hello test!"); //调用封装好的打印函数
run(300);
return 0;
}
在Linux下编译:
gcc test.c -o test
执行程序:
./test
打印输出:
可看到输出符合我们的预期,大大简化了调试打印的过程。
前言:
无论是Linux开发还是Windows或者Mac os开发,在我们开发项目的过程中,必不可少的就是调试了,特别是开发嵌入式程序,由于资源条件的限制,调试程序变得更为困难。一般常用的由两种方法:
一:打印输出(包括控制台输出和日志文件输出)
二:GDB调试器
对于Linux平台来说,GDB调试命令行界面使用起来确实很不方便。所以一般更常用的是输出日志文件的方法,下面简单记录下调试输出信息的一个小技巧:
预定义调试输出宏+封装打印函数
举个栗子:
编写一个简单的测试程序test.c,
代码如下:
#include
#define DEBUG //预定义调试宏
#ifdef DEBUG //封装打印函数
#define PRINT (printf("%s %s %d: ",__FILE__,__FUNCTION__,__LINE__),printf)
#else
#define PRINT
#endif
void run(int step){
PRINT("%s:%dn","I run 100m need: ",step);
}
int main(){
int i = 6;
PRINT("%sn","hello test!"); //调用封装好的打印函数
run(300);
return 0;
}
在Linux下编译:
gcc test.c -o test
执行程序:
./test
打印输出:
可看到输出符合我们的预期,大大简化了调试打印的过程。
举报
更多回帖