Linux调试--快速定位到具体文件名和对应行数

Linux调试--快速定位到具体文件名和对应行数


很多时候,对于一个大型项目(几百个文件以上、几十万行代码以上),调试调试的时候需要能够快速准确定位到某一个文件和对应的行数,第一种方式可以规定一种输出调试标准,第二种方法可通过简单的函数或者宏定义输出文件名称和对应的行数,本文提供第二种方法。


1、源码

源码包括如下4个文件,其中主要功能为 PNT(_FMT,...)宏定义

main.c:

#include<stdio.h>
#include"mydebug.h"
#include"testbug1.h"

void testfunc();

void main()
{
	printf("This main!\n");
	PNT("This is %s\n","testfunc.c->main()");

	testfunc();
	testbug1();
}

void testfunc()
{
	PNT("%s\n","testfunc.c->testfunc()");
}

mydebug.h

#include<strings.h>
#define PNT(_FMT,...) do{\
	char _buf[512]; bzero(_buf,sizeof(_buf));\
	snprintf(_buf,sizeof(_buf)-1,"<%-20s:%d> "_FMT, __FILE__, __LINE__,##__VA_ARGS__);\
	printf("%s\n",_buf);\
} while(0)

注:此处可以根据需要更改<%-20s:%d>中的20为其它长度的字符串!

testbug.h

#include<stdio.h>
#include"mydebug.h"
void testbug1();

testbug.c

#include"testbug1.h"
void testbug1()
{	
	PNT("%s\n","This is testbug1.c->testbug1()");
}

Makefile

bug:main.o testbug1.o
	gcc -o bug main.o testbug1.o
testbug1.o:testbug1.c
	gcc -c testbug1.c
testbug.o:main.c
	gcc -c main.c
.PHONY:clean
clean:
	-rm main.o testbug1.o bug


2、测试结果


printf多了文件名称和对应的行数,若编译中有多层文件夹,还可以显示文件的部分路径!


3、说明

截图系统版本:Ubuntu 16.04 Server (64-bit)

阅读更多
文章标签: 调试 Linux C
个人分类: Linux C
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Linux调试--快速定位到具体文件名和对应行数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭