Ubuntu下gdb调试外部程序

身为程序员,Debug是少不了的。本文简单介绍一下在Linux下如果调试,如有错误请及时纠正。

1、Linux下调试静态库

静态库,以.a形式链接进主程序,其Makefile文件如下所示:

#makefile
CC=gcc
CXX=g++
RM=rm -f
CPPFLAGS=-g
LDFLAGS=-g
LDLIBS=-lfunctions 
AR=ar

SRCS=main.cpp functions.cpp
OBJS=$(subst .cpp,.o,$(SRCS))

all: main
main: $(OBJS) libfunctions.a 
	$(CXX) $(CPPFLAGS) -o main $(OBJS) -L. $(LDLIBS) 
main.o: main.cpp functions.h testobj.h 
functions.o: functions.h functions.cpp 

clean: $(RM) $(OBJS) 

all-clean: clean $(RM) main

 上述makefile文件,将functions相关部分编译打包成一个.a文件,并在最后链接进主程序。libfunctions.a由functions.o生成,具体过程可自行搜索Makefile语法及编译过程了解。

2、Linux下调试动态库

以下是动态库调试的Makefile文件

CC=gcc
CFLAGS=-g
LDLIBS=libex.so
AR=ar

SRCS=main.c exlib.c
OBJS=main.o

all:main
main:$(OBJS) LDLIBS
	$(CC) $(CFLAGS) -o main $(OBJS) -L . $(LDLIBS)

main.o:main.c exlib.c exlib.h

LDLIBS:exlib.o
	$(CC) -shared -o $@ $^

exlib.o:exlib.c exlib.h
	$(CC) -fPIC -g $^ -o $@

clean:
	$(RM) $(OBJS) main

无论是动态库或者静态库,本质都是在库文件中加入了调试信息,如代码位置,行号等信息,这些信息被gdb捕捉后进行相应的动作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值