身為程式設計師,debug是少不了的。本文簡單介紹一下在linux下如果除錯,如有錯誤請及時糾正。
1、linux下除錯靜態庫
#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捕捉後進行相應的動作。 Ubuntu下的GDB除錯
gdb gnu debugger,是gnu工程為gnu作業系統開發的 偵錯程式,但它的使用不侷限於gnu作業系統,gdb可以執行 在unix linux甚至microsoft windows。gdb可以除錯c c objective c pascal ada等語言編 寫的程式 被除錯的程式可以跟gd...
Ubuntu下GDB除錯C語言程式
感謝博主。gdb是gnu開源組織發布的乙個unix下的程式除錯工具,專門用來除錯c,c 這些程式的了,而且都是命令列模式的。平時我們在ide開發得時候,必須在執行的時候選擇debug模式,否則斷點就無效了。因此,在用gcc編譯的時候也是需要一些編譯引數的。使用gcc編譯時要新增 g選項來把原始碼編譯...
linux下的gdb除錯
如果編譯時,增加了引數 g,就會生成帶源 除錯符號的可執行檔案。增加的除錯符號一般會使檔案變的大一點。gcc o xx xx.c g 進一步地,就可以執行下面的指令啟動除錯工具進入除錯環境對程式進行除錯了。gdb xx 在除錯環境下,可以輸入下列指令來控制除錯。l n第乙個字母是小寫的l,列出第n行...