zoukankan      html  css  js  c++  java
  • print to console or file

    /*----------------------------------------------------------------------*/
    /*              Debug for embeded board, 2008-2-26, Rain.               */
    /*----------------------------------------------------------------------*/
    #define  PRINT_DEBUG    1
    #define  UNDERLINE              "33[4m"
    #define  BLACK                  "33[30m"
    #define  RED                    "33[31m"
    #define  GREEN                  "33[32m"
    #define  YELLOW                 "33[33m"
    #define  BLUE                   "33[34m"
    #define  PURPLE                 "33[35m"
    #define  DARKGREEN              "33[36m"
    #define  WHITE                  "33[37m"
    #define  BG_BLACK               "33[40m"
    #define  BG_RED                 "33[41m"
    #define  BG_GREEN               "33[42m"
    #define  BG_YELLOW              "33[43m"
    #define  BG_BLUE                "33[44m"
    #define  BG_PURPLE              "33[45m"
    #define  BG_DARKGREEN           "33[46m"
    #define  BG_WHITE               "33[47m"
    #define  CLOSE                  "33[0m"
    #define cprintf(fmt, args...) do           
    {                                              
        FILE *fp1 = fopen("/dev/tty", "a");
        FILE *fp2 = fopen("/tmp/dbg.txt", "a");
        int  flag = 0;                         
        if (fp1 && (flag == 0 || flag == 2)) { 
            fprintf(fp1, fmt, ## args);    
            fclose(fp1);                   
        }                                      
        if (fp2 && (flag == 1 || flag == 2)) { 
            fprintf(fp2, fmt, ## args);    
            fclose(fp2);                   
        }
    } while (0)

    #ifdef  PRINT_DEBUG
    #define dbg(fmt, args...)   
        cprintf("==> CGI_DEBUG %s | %s %d | " fmt CLOSE, __FILE__, __FUNCTION__, __LINE__, ##args)
    #else
    #define dbg(fmt, args...)
    #endif
    /*----------------------------------------------------------------------*/

    /*----------------------------------------------------------------------*/
    /*              Debug for SSH terminal, 2008-2-26, Rain.                */
    /*----------------------------------------------------------------------*/
    #define  PRINT_DEBUG    1
    #define  UNDERLINE              "33[4m"
    #define  BLACK                  "33[30m"
    #define  RED                    "33[31m"
    #define  GREEN                  "33[32m"
    #define  YELLOW                 "33[33m"
    #define  BLUE                   "33[34m"
    #define  PURPLE                 "33[35m"
    #define  DARKGREEN              "33[36m"
    #define  WHITE                  "33[37m"
    #define  BG_BLACK               "33[40m"
    #define  BG_RED                 "33[41m"
    #define  BG_GREEN               "33[42m"
    #define  BG_YELLOW              "33[43m"
    #define  BG_BLUE                "33[44m"
    #define  BG_PURPLE              "33[45m"
    #define  BG_DARKGREEN           "33[46m"
    #define  BG_WHITE               "33[47m"
    #define  CLOSE                  "33[0m"
    #define cprintf(fmt, args...) do           
    {                                              
        char *dev = getenv("SSH_TTY");         
        FILE *fp1 = fopen(dev, "a");           
        FILE *fp2 = fopen("/tmp/dbg.txt", "a");
        int  flag = 0;                         
        if (fp1 && (flag == 0 || flag == 2)) { 
            fprintf(fp1, fmt, ## args);    
            fclose(fp1);                   
        }                                      
        if (fp2 && (flag == 1 || flag == 2)) { 
            fprintf(fp2, fmt, ## args);    
            fclose(fp2);                   
        }
    } while (0)

    #ifdef  PRINT_DEBUG
    #define dbg(fmt, args...)   
        cprintf("==> CGI_DEBUG %s | %s %d | " fmt CLOSE, __FILE__, __FUNCTION__, __LINE__, ##args)
    #else
    #define dbg(fmt, args...)
    #endif
    /*----------------------------------------------------------------------*/

  • 相关阅读:
    stylelint 安装配置
    使用 jest 测试 react component 的配置,踩坑。
    互联网媒体类型 MIME Type
    react-router 父子路由同时要接收 params 的写法
    fixed 相对于父容器定位
    react 点击空白处隐藏弹出层
    canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上
    JavaScript 缓存基本原理
    简单说明 Virtual DOM 为啥快
    通过阻止 touchstart 事件,解决移动端的 BUG
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7352525.html
Copyright © 2011-2022 走看看