麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

C語言調試手段:鎖定錯誤的實現方法

2020-01-26 16:07:36
字體:
來源:轉載
供稿:網友
在項目開發工程中,如果能確定哪個文件下的哪個函數下的哪行出錯--即鎖定錯誤,那該多好啊,該文章就是為此而作的。
首先來了解一下文件默認的輸出信息的函數吧:
文件信息函數:
復制代碼 代碼如下:

printf("line : %d/n", __LINE__);                   //當前行數
printf("filename : %s/n", __FILE__);             //當前文件名
printf("function : %s/n", __FUNCTION__);  //當前函數
printf("time : %s/n", __TIME__);                  //當前時間
printf ("date : %s/n",  __DATE__);              //當前日期
輸出:
line : 10
filename : test.c
function : main.c
time : 14:13:51
date : Oct 13 2012

理論已足,那就來看看如何鎖定錯誤吧:
一、源文件:
復制代碼 代碼如下:

[root@localhost for_test]# cat erroutput.c
#include <stdio.h>
#include <assert.h>
#define _DEBUG(msg...)    printf("[ %s,%s, %d ]=>",__FILE__, __FUNCTION__, __LINE__);  printf(msg);printf("/r/n")
#define _ERROR(msg...)    printf("[ error: %s, %d]=>", __FILE__,  __LINE__);printf(msg); printf("/r/n")
#define _ASSERT(exp)      /
                        do {/
                                if (!(exp)) {/
                                printf( "[ %s ]  ",#exp);printf("/r/n");/
                                assert(exp);/
                                }/
                        } while (0)
int main(void)
{
        char *p = NULL;
        _DEBUG("DEBUG!");
        _ERROR("ERROR!");
        _ASSERT(NULL != p);
        return 0;
}

二、輸出:
復制代碼 代碼如下:

[root@localhost for_test]# gcc erroutput.c
[root@localhost for_test]# ./a.out
[ erroutput.c,main, 17 ]=>DEBUG!
[ error: erroutput.c, 18]=>ERROR!
[ NULL != p ]
a.out: erroutput.c:19: main: Assertion `((void *)0) != p' failed.
已放棄

TI處理:
復制代碼 代碼如下:

#ifdef DEBUG
    #define DBG(fmt, args...)  printf("Debug " fmt, ##args)// ##運算符用于把參數連接到一起。預處理程序把出現在##兩側的參數合并成一個符號。
#else
    #define DBG(fmt, args...)
#endif
#define ERR(fmt, args...)  printf("Error " fmt, ##args)
[root@localhost for_test]# cat debug_err.c
#include <stdio.h>
//#define DEBUG
int main(void)
{
       DBG("xxxx/n");
       ERR("xxxx/n");
       return 0;
}
[root@localhost for_test]# ./a.out
Error xxxx

#ifdef __DEBUG
    #define DBG(fmt, args...) fprintf(stderr,"Encode Debug: " fmt, ## args)
#else
    #define DBG(fmt, args...)
#endif
#define ERR(fmt, args...) fprintf(stderr,"Encode Error: " fmt, ## args)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 日韩中文字幕一区二区三区 | 国产伊人色 | 草草视频在线播放 | 免费观看视频在线观看 | 999久久国精品免费观看网站 | 国产亚洲精品成人 | 色婷婷久久久亚洲一区二区三区 | 亚洲欧美国产高清 | 国产一级免费不卡 | 永久av在线免费观看 | 欧美成人一区二区视频 | 天海翼无删减av三级在线观看 | 黑人一区| 亚洲视屏在线观看 | 国产91在线播放九色 | 成人在线视频播放 | 中文字幕网在线 | 国产一级免费在线视频 | 色播视频在线播放 | 黄色av电影在线 | 欧美性受xxx黑人xyx性爽 | 欧美综合成人 | 草莓福利视频在线观看 | 激情97 | 欧美精品一区二区中文字幕 | 黄色片在线播放 | 一区二区三区黄色 | 欧美激情精品久久久久久久久久 | 久久久久久久爱 | 校花被肉干高h潮不断 | 日本看片一区二区三区高清 | 欧美日本一 | 激情久久免费视频 | 欧美成人一级片 | 国产女同玩人妖 | 成人一级视频 | jizzjizzjizz少妇 | 成人性生活视频 | 久久精品一区二区三区不卡牛牛 | 日本成人一二三区 | 最新黄色电影网站 |