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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值