天天看點

《嵌入式 Linux C 語言應用程式設計(修訂版)》——2.4 嵌入式Linux調試器GDB的使用

本節書摘來異步社群《嵌入式 linux c 語言應用程式設計(修訂版)》一書中的第2章,第2.4節,作者:華清遠見嵌入式教育訓練中心,孫瓊,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

嵌入式 linux c 語言應用程式設計(修訂版)

在程式編譯通過生成可執行檔案之後,就進入了程式的調試環節。調試一直來是程式開發中的重中之重,如何使程式員能夠迅速找到錯誤的原因是一款調試器的目标。

gdb是gnu開源組織釋出的一個強大的linux下的程式調試工具,它是一種強大的指令行調試工具。

一個出色的調試器需要有以下幾項功能。

能夠運作程式,設定所有能影響程式運作的參數。

能夠讓程式讓指定的條件下停止。

能夠在程式停止時檢查所有參數的情況。

能夠根據指定條件改變程式的運作。

下面通過一個簡單的執行個體使讀者對gdb有一個感性的認識,這裡所介紹的指令都是gdb中最為基本也是最為常用的指令,希望讀者能夠動手操作,掌握gdb的使用方法。 首先,有以下程式段。

[root@localhost gdb]# gdb test

gnu gdb red hat linux (6.3.0.0-1.21rh)

copyright 2004 free software foundation, inc.

gdb is free software, covered by the gnu general public license, and you are

welcome to change it and/or distribute copies of it under certain conditions.

type "show copying" to see the conditions.

there is absolutely no warranty for gdb. type "show warranty" for details.

this gdb was configured as "i386-redhat-linux-gnu"...using host libthread_db library "/lib/libthread_db.so.1".

(gdb)<code>`</code>

可以看出,在gdb的啟動畫面中指出了gdb的版本号、使用的庫檔案等資訊,接下來就進入了由“(gdb)”開頭的指令行界面了。

2.檢視檔案

在gdb中鍵入‘l’(list)就可以檢視所載入的檔案,如下所示:

(gdb) b 6

breakpoint 1 at 0x804846d: file test.c, line 6.<code>`</code>

要注意的是,在gdb中利用行号設定斷點是指代碼運作到對應行之前暫停,如上例中,代碼運作到第5行之前暫停(并沒有運作第5行)。

4.檢視斷點處情況

在設定完斷點之後,使用者可以鍵入“info b”來檢視設定斷點情況,在gdb中可以設定多個斷點。

(gdb) r

starting program: /home/yul/book/test

breakpoint 1, add (m=50) at test.c:6

6 for(i=1; i&lt;=m;i++)<code>`</code>

可以看到,程式運作到斷點處就停止了。

6.檢視變量值

在程式停止運作之後,程式員需要檢視斷點處的相關變量值。在gdb中隻需鍵入“p+變量值”即可,如下所示:

(gdb) watch n

hardware watchpoint 2: n<code>`</code>

可以看到,gdb在“n”設定了觀察點。

注意 在此處必須鍵入完整的指令“watch”,因為在gdb中有不少以‘w’開頭的指令,如“where”、“while”等。

8.單步運作

單步運作是指一次隻運作一條語句,這樣可以友善程式員來檢視程式運作的結果,在此處隻需鍵入“n”(next)即可。

(gdb) c

continuing.

the sum of 1-50 is 1275

program exited with code 031.<code>`</code>

10.退出gdb

退出gdb隻需使用指令“q”(quit)即可,如下所示:

繼續閱讀