上一篇转载的没看懂,参考别人的代码,自己又琢磨了一个调试技巧,挺好用,姑且就叫调试开关吧,欢迎指正!!!

/*功能:调试开关
*描述:if条件成立,则打印调试信息,否则不打印()
*
*/ #include<stdio.h>
#if 1 //为0时调试关闭, 为1时调试打开
#define DEBUG_OUT(fmt, args...)\
printf("file:%s func:%s line:%d\n", __FILE__, __func__, __LINE__) #else
#define DEBUG_OUT(fmt, args...) ((void)0)
#endif
int main(void)
{
int i;
for(i = ; i < ; i++){
printf("i = %d\n", i);
}
print();
DEBUG_OUT();
return ;
} int print(void)
{
printf("hello world\n");
DEBUG_OUT();
return ;
}
-- 插入

如上代码:

1)__FILE__ 打印出调试信息所在的文件名;

2)__func__ 将会打印出调试信息所在的函数名;

3)__LINE__ 将会打印出调试信息所在文件的行号;

运行结果:

[root@embedclub test]# gcc -o debug debug.c
[root@embedclub test]# ./debug
i = 0
i = 1
i = 2
i = 3
hello world
file:debug.c func:print line:28
file:debug.c func:main line:21

c语言调试开关的更多相关文章

  1. 【转】嵌入式C语言调试开关

    在调试程序时,经常会用到assert和printf之类的函数,我最近做的这个工程里就有几百个assert,在你自认为程序已经没有bug的时候,就要除去这些调试代码,应为系统在正常运行时这些用于调试的信 ...

  2. GDAL库调试(包括跨语言调试)

    很多时候都需要调试GDAL库,尤其是像学习GDAL库中的某些算法是如何实现的时候,调试就必不可少了. 首先说明用C++的调试.以VS2008为例进行说明. 编译DEBUG版本的GDAL库,这个可以参考 ...

  3. 混合 App 打开 H5 调试开关

    背景 随着现在移动端设备的硬件性能的提高,现在web页面的体验逐渐变得可以接受,现在很多的应用都采用的Hybrid开发模式,一方面有利用了原生设备的API的优势(性能好.用户体验好),另一方面利用了w ...

  4. c语言调试接口

    http://blog.chinaunix.net/uid-10106787-id-2985587.html 在C语言程序设计中,常会出现各种各样的bug:段错误.参数异常等等.我们需要尽快定位错误, ...

  5. C语言调试过程中duplicate symbol错误分析

    说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...

  6. golang语言调试

    https://software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs https: ...

  7. C 语言调试信息输出宏定义

    C 语言经常在实际的调试过程中,使用最基本的调试方法printf,我们可以使用__FILENAME__.__FUNCTION__.__LINE__,增加自己的输出宏定义: #define DVR_PR ...

  8. C语言调试的几种方法

    linux系统下,在不gdb调试的情况下,我们如何解决程序崩溃问题呢?首先想到的就是添加log日志信息,其次还有以下几种方法可以帮助我们分析存在的问题: (一)add2line 程序崩溃时会打出一些崩 ...

  9. 一、C语言调试—— gdb 的使用

    1.1 gdb 调试工具常用命令 list:展开调试的源代码,缩写 l: break:设置断点,缩写为 b: info break:查看断点信息,缩写为 i b delete:删除断点 print:打 ...

随机推荐

  1. seajs第二节,seajs各模块依赖关系

    index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  2. hdu 3656 DLX

    思路:二分枚举建边,用DLX判断是否满足. #include<set> #include<cmath> #include<queue> #include<cs ...

  3. JAXL发送房间消息

    使用composer形式安装的JAXL <?php require_once "vendor/autoload.php"; $client = new JAXL(array( ...

  4. 二维码zxing源码分析(二)decode部分

           在上一篇博客中分析了zxing怎么打开摄像头,并且扫描结果,那么扫描之后的数据呢,是不是就要解析了呢,那我们看一下zxing怎么解析这个数据的.       上一篇博客地址ZXING源码 ...

  5. Part 7 Joins in sql server

    Joins in sql server Advanced or intelligent joins in sql server Self join in sql server Different wa ...

  6. NSString和NSArray平时练习总结

    /*************************字符串练习****************************/ //创建字符串 //1.快速创建 NSString *str1 = @&quo ...

  7. 解决Toad for Oracle显示乱码问题

    1.查看一下数据库字符集: 使用下面语句:Select userenv('language') from dual;或者:Select name, value$ from props$;查看. 查看完 ...

  8. java静态代码块、初始化块和构造方法的执行顺序

    分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静 ...

  9. (转)Yale CAS + .net Client 实现 SSO(4)

    第一部分:安装配置 Tomcat 第二部分:安装配置 CAS 第三部分:实现 ASP.NET WebForm Client 第四部分:实现基于数据库的身份验证 1.下载 Microsoft JDBC ...

  10. CodeSmith和PowerDesigner的使用安装和数据库创建

    原文链接: http://www.cnblogs.com/huangcong/archive/2010/06/14/1757957.html 废话少说,开始我们的CodeSmith旅程吧,我先讲讲这个 ...