a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

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

2020-02-24 14:27:00
字體:
來源:轉載
供稿:網友

在編程過程中,有時我們編寫的程序在發生邏輯錯誤時不能運行正確的結果,這就要求我們調試一些容易出錯的語句,下文是武林技術頻道小編為大家介紹的C語言調試手段:鎖定錯誤的實現方法,一起來看看吧!
首先來了解一下文件默認的輸出信息的函數吧:
文件信息函數:

?

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)

以上就是C語言調試手段:鎖定錯誤的實現方法,相信這些內容對大家都很有用,建議你可以好好收藏我們的專業的網站js.Vevb.com。

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

圖片精選

主站蜘蛛池模板: 久久久久久久国产精品 | 精品a在线 | 国产区91| 国产伦理精品一区二区三区观看体验 | 久草一级片 | 成人教育av | 日本成人一区二区三区 | 狠狠躁夜夜躁人人爽视频 | 欧美国产日韩在线观看 | 自拍第一页 | 成人国产精品一级毛片视频 | 麻豆亚洲 | 精品一区电影国产 | 一区二区日本 | 国产伦理精品一区二区三区观看体验 | 亚洲美女网址 | 国语对白做受欧美 | 国产成人精品一区二 | 亚洲成人免费影院 | 97超碰超碰 | 午夜一本 | 亚洲精品午夜aaa久久久 | 国产传媒毛片精品视频第一次 | 欧美午夜视频 | www.日韩 | 91国内精品 | 欧美日韩成人 | 亚洲精品一区二区三区麻豆 | 久久久久国产精品 | 热久久久久 | 色综合久久久 | 伊人色播 | 成人在线激情 | 97久久精品人人做人人爽50路 | 91精品综合久久久久久五月天 | 成年人视频在线免费观看 | 欧美精品一区二区三区一线天视频 | 男人天堂网址 | 久久综合一区二区 | 国产精品视频十区 | 色噜噜在线 |