在編程過程中,有時我們編寫的程序在發(fā)生邏輯錯誤時不能運行正確的結(jié)果,這就要求我們調(diào)試一些容易出錯的語句,下文是武林技術(shù)頻道小編為大家介紹的C語言調(diào)試手段:鎖定錯誤的實現(xiàn)方法,一起來看看吧!
首先來了解一下文件默認的輸出信息的函數(shù)吧:
文件信息函數(shù):
?
printf("line : %d/n", __LINE__);?????????????????? //當前行數(shù)
printf("filename : %s/n", __FILE__);???????????? //當前文件名
printf("function : %s/n", __FUNCTION__);? //當前函數(shù)
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)// ##運算符用于把參數(shù)連接到一起。預處理程序把出現(xiàn)在##兩側(cè)的參數(shù)合并成一個符號。
#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語言調(diào)試手段:鎖定錯誤的實現(xiàn)方法,相信這些內(nèi)容對大家都很有用,建議你可以好好收藏我們的專業(yè)的網(wǎng)站js.Vevb.com。