Linux編程基礎——GDB(入門)

來源:互聯網
上載者:User

調試是開發過程中一項不可或缺的工作,在Linux編程中,通常使用gdb來調試我們的c/c++程式,由於gdb可介紹的東西比較多,這裡將分幾篇文章介紹,網上有篇文章介紹的非常詳細,值得收藏:用GDB偵錯工具(一)、(二)、(三)、(四)、(五)、(六)、(七)。

前期準備

在程式編譯的時候,函數名、變數名會被相應的記憶體位址所代替,但這些記憶體位址對於我們來說是不可讀的。我們往往需要需要根據函數名、變數名來尋找實際的地址,從而讀取其值。

為了方便調試,gcc增加了一個-g參數,在編譯的時候可以在程式集中添加相應的符號資訊。

    gcc -g hello.c -o hello

啟動GDB

啟動GDB的方法有以下幾種:

  1. gdb <program>    用gdb關聯程式,可以通過run命令啟動關聯上的程式進程。
  2. gdb <program> core    用gdb調試core檔案,core是程式非法執行後core dump後產生的檔案。
  3. gdb <program> <PID>用gdb調試當前正在啟動並執行進程,類似VS中的"附加到進程"方式的調試。

這些方式實際上也可以自由組合使用。例如,我們也可以先通過gdb <program>關聯程式,然後通過attach <pid>的方式調試當前正在啟動並執行進程。

GDB環境簡介

首先介紹下GDB環境,GDB也是一個Shell式的互動環境,在GDB中,可以進程看到其提示符:(gdb)

    (gdb) break

在gdb中,也想VS那樣有一定的智能提示功能,具體如下:

  1. 輸入命令時,可以不用打全命令,只用打命令的前幾個字元就可以了。
  2. 當輸入前幾個字元後,可以通過Tab鍵自動補全
  3. 當前幾個字元開頭的命令較多時,Tab鍵無法補全,再次敲TAB鍵可以顯示所有該字元開頭的命令。
  4. 可以通過斷行符號鍵重複執行命令(單步跟蹤的時候常用)
  5. 可以通過上下鍵切換曆史命令

例如,設定斷點的命令是break,可以直接輸入b;也可以輸入b後敲兩次Tab鍵以查詢所有b開頭的命令(只有一個的話可以直接補全):

    (gdb) b
    backtrace bookmark break break-range bt

這個智能提示也可以使用於在設定斷點時候自動聯想函數名稱,例如,我們要對main函數設定斷點,當輸入b mai後敲Tab鍵,會自動補全為main

    (gdb) b main

另外,也可以通過help <command>命令查看不熟悉的命令的協助資訊,類似於shell下的man,非常方便。

退出GDB

退出gdb的方式比較簡單,直接在Shell下輸入q(quit)命令就可以了:

    (gdb) q
    tianfang >

由於篇幅所限,本文暫且介紹到這裡,下篇文章主要介紹如何設定斷點。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.