網(wǎng)站建設(shè)項目分析報告免費制作小程序平臺
gdb調(diào)試工具和make/makefile工具
文章目錄
- gdb調(diào)試工具和make/makefile工具
- 一、gdb調(diào)試工具
- 1.debug/release
- 2.使用
- 二、make/makefile
- 1.什么是make/makefile
- 2.編寫
一、gdb調(diào)試工具
1.debug/release
- 程序有兩種默認(rèn)的發(fā)布方式debug和release。
- release是無法進行調(diào)試的。
- Linux中g(shù)cc和g++編譯鏈接得到的默認(rèn)為
release模式
,所以我們在調(diào)試前應(yīng)加一個**-g**選項進行編譯。
gcc test.c -o g_test -g
debug版本的可執(zhí)行文件也會比release版本大一些,這大的空間里面存放的就是調(diào)試信息。
2.使用
- 安裝
sudo yum install -y gdb
- gdb基本操作
l 行號:從指定的行號開始往下顯示源代碼,每次顯示10行 (l – list);
l 函數(shù):列出某個函數(shù)的源代碼 ;
r:運行程序 (r -> run);
b 行號:在某一行打一個斷點,相當(dāng)于VS中的F9 (b –> breakpoint);
info b:查看斷點;
d 斷點編號:刪除斷點 (d –> delete);
r:調(diào)試運行,如果程序中有斷點,則在斷點處停下來,如果沒有,則直接將程序跑完,相當(dāng)于VS中的F5 (r –> run);
n:逐過程調(diào)試,相當(dāng)于VS中的F10 (n –> next);
s:逐語句調(diào)試,相當(dāng)于VS中的F11 (s –> step);
c:運行至下一個斷點處停下 (c –> continue);
bt:查看調(diào)用堆棧 (breaktrace);
p 變量:查看變量值 (p –> print);
display/undisplay 變量:跟蹤查看一個變量,每次停下來都顯示它的值,undisplay 取消對先前設(shè)置的那些變量的跟蹤;
finish:把當(dāng)前函數(shù)運行完;
disable breakpoints:禁用斷點;
enable breakpoints:啟用斷點;
quit:退出 gdb;
- 演示
#include <stdio.h>
int Add(int x, int y)
{int m = x + y;return m;
}int main()
{int a = 10, b = 20;int c = Add(a, b);printf("%d\n", c);return 0;
}
- 進入gdb后,l顯示代碼。(
l
每次顯示10行,下次接著上次的進行顯示)
按住**回車(ENTER)**也可以執(zhí)行上次執(zhí)行的命令。
- 輸入r,運行代碼,得到結(jié)果30。
- b/info b
- d 斷點編號
刪除斷點。
- r(有斷點)
調(diào)試運行。
- n逐過程調(diào)試,s逐語句調(diào)試
- c進到下一個斷點處
- bt查看調(diào)用堆棧
- p/display/undisplay
p : 查看變量值
display : 追蹤顯示變量值
undisplay : 取消追蹤顯示變量值
- q 退出
二、make/makefile
1.什么是make/makefile
在大型的工程中,源文件不計其數(shù)如果我們每個源文件都手搓編譯的話,是不是太麻煩且浪費時間了呢?
Linux 提供了項目自動化構(gòu)建工具 – makefile
來幫助我們解決這個問題;makefile 定義了一系列的規(guī)則來指定如何對眾多的源文件進行管理;makefile帶來的好處就是 – “自動化編譯”,即 makefile 一旦寫好,以后我們就只需要一個 make 命令,整個工程就可以完全自動編譯,極大的提高了軟件開發(fā)的效率。
2.編寫
makefile 只是當(dāng)前路徑下一個普通文件,編寫他最重要的是依賴關(guān)系和依賴方法。
- 依賴關(guān)系:誰依賴于誰,目錄下必須有依賴的那個文件。
- 依賴方法:如何根據(jù)依賴的那個文件得到目標(biāo)文件
- 演示
mytest:test.c //依賴關(guān)系gcc test.c -o mytest //依賴方法.PHONY:clean //偽目標(biāo)
clean:rm -f mytest
寫好makefile后,我們在當(dāng)前路徑下執(zhí)行make,系統(tǒng)會自動查找makefile文件進行命令執(zhí)行。