欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux中g(shù)db的入門使用教程

 更新時間:2019年01月10日 10:51:09   作者:一盞淡酒、醉了夕陽  
這篇文章主要給大家介紹了關(guān)于linux中g(shù)db的入門使用的相關(guān)資料。文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

gdb是linux下非常好用的一個調(diào)試工具,雖然它是命令行模式的調(diào)試工具,但是它的功能強大到你無法想象,這里簡單介紹下gdb的使用方法,需要的朋友們下面來一起看看詳細的介紹吧。

斷點

在代碼的指定位置中斷,使程序在此中斷。

  • break <function> 在進入指定函數(shù)時停住
  • break <linenum> 在指定行號停住。
  • break +/-offset 在當前行號的前面或后面的offset行停住。offiset為自然數(shù)。
  • break filename:linenum 在源文件filename的linenum行處停住。
  • break ... if <condition> ...可以是上述的參數(shù),condition表示條件,在條件成立時停住。比如在循環(huán)境體中,可以設(shè)置break if i=100,表示當i為100時停住程序。

案例:

(gdb) break sc_smartcontract_handler.cpp:45
Breakpoint 4 at 0x424d42: file sc_smartcontract_handler.cpp, line 45.

對斷點的相關(guān)操作

  • delete 刪除所有斷點
  • delete breakpoint [n] 刪除某個斷點
  • disable breakpoint [n] 禁用某個斷點
  • enable breakpoint [n] 使能某個斷點
  • info breakpoints [n] 查看當前斷點信息

觀察點

捕捉點用來補捉程序運行時的一些事件。如:載入共享庫(動態(tài)鏈接庫)、C++的異常等。通常也是用來定位bug。

捕捉點的命令格式是:catch <event>,event可以是下面的內(nèi)容

  • watch <expr> 變量發(fā)生變化時中斷
  • rwatch <expr> 變量被讀時中斷
  • awatch <expr> 變量值被讀或被寫時中斷

可以通過info watchpoints [n]命令查看當前觀察點信息

查看變量

最常用的查看變量的方法是

 (gdb) print {變量名}

(gdb) print argc
$1 = 1

如果打印數(shù)組,由于默認的設(shè)置,可能打印的數(shù)組尾部部分沒有顯示,可以通過如下的命令設(shè)置打印數(shù)組的最大長度

(gdb) set print elements 300

調(diào)試中查看代碼

  • list function 如list main:顯示main函數(shù)附近的代碼
  • list file:function 如list main.c:main:顯示main.c中的main函數(shù)附近的代碼
  • list n1,n2 如list 10,20,顯示當前文件的10到20行

雖然list已經(jīng)很方便了, 但還是不盡人意. 如果能夠在運行的同時顯示代碼就好了, 答案是肯定的.

使用如下命令啟動gdb: gdb -tui 項目名 或者在啟動gdb后, 輸入命令focus,如圖:

恢復程序運行和單步調(diào)試

在gdb中,和調(diào)試步進相關(guān)的命令主要有如下幾條:

  • continue 繼續(xù)運行程序直到下一個斷點(類似于VS里的F5)
  • next 逐過程步進,不會進入子函數(shù)(類似VS里的F10)
  • setp 逐語句步進,會進入子函數(shù)(類似VS里的F11)
  • until 運行至當前語句塊結(jié)束
  • finish 運行至函數(shù)結(jié)束并跳出,并打印函數(shù)的返回值(類似VS的Shift+F11)

在特定線程中中斷

你可以定義你的斷點是否在所有的線程上,或是在某個特定的線程。GDB很容易幫你完成這一工作。

  • break <linespec> thread <threadno>
  • break <linespec> thread <threadno> if ...

linespec指定了斷點設(shè)置在的源程序的行號。threadno指定了線程的ID,注意,這個ID是GDB分配的,你可以通過"info threads"命令來查看正在運行程序中的線程信息。如果你不指定thread <threadno>則表示你的斷點設(shè)在所有線程上面。你還可以為某線程指定斷點條件。如:

(gdb) break frik.c:13 thread 28 if bartab > lim

當你的程序被GDB停住時,所有的運行線程都會被停住。這方便你你查看運行程序的總體情況。而在你恢復程序運行時,所有的線程也會被恢復運行。那怕是主進程在被單步調(diào)試時。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • CentOS7安裝調(diào)試Mysql數(shù)據(jù)庫的步驟詳解【實例】

    CentOS7安裝調(diào)試Mysql數(shù)據(jù)庫的步驟詳解【實例】

    這篇文章主要介紹了CentOS7安裝調(diào)試Mysql數(shù)據(jù)庫,本文分步驟通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Linux環(huán)境下安裝Nginx及其使用

    Linux環(huán)境下安裝Nginx及其使用

    這篇文章主要介紹了Linux環(huán)境下安裝Nginx及其使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Linux whatis命令的使用方法

    Linux whatis命令的使用方法

    這篇文章主要介紹了Linux whatis命令的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • linux?服務(wù)器安裝gcc8的問題記錄

    linux?服務(wù)器安裝gcc8的問題記錄

    我原本安裝了gcc13.0版本,但是版本太高了,導致我安裝cuda報錯gcc版本太高,所以就安裝低版本的gcc,下面通過本文給大家分享linux?服務(wù)器安裝gcc8的問題記錄,感興趣的朋友一起看看吧
    2024-07-07
  • Linux 安裝二進制MySQL 及 破解MySQL密碼的方法

    Linux 安裝二進制MySQL 及 破解MySQL密碼的方法

    這篇文章主要介紹了Linux 安裝二進制MySQL 及 破解MySQL密碼的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Apache虛擬主機VirtualHost配置項詳解

    Apache虛擬主機VirtualHost配置項詳解

    在Apache中,VirtualHost容器用于定義一個虛擬主機的配置,它允許在單一的物理服務(wù)器上托管多個不同的網(wǎng)站,每個網(wǎng)站可以有自己的域名、文檔根目錄、錯誤日志等,這篇文章主要介紹了Apache虛擬主機VirtualHost配置項詳解,需要的朋友可以參考下
    2024-07-07
  • LINUX中詳解AWK內(nèi)建變量FS,NF,NR,RT,RS,ORS,OFS

    LINUX中詳解AWK內(nèi)建變量FS,NF,NR,RT,RS,ORS,OFS

    很多朋友沒搞告白AWK內(nèi)建變量FS,NF,NR,RT,RS,ORS,OFS的方法和原理,小編給大家總結(jié)了詳細的內(nèi)容,一起來學習下思路。
    2017-11-11
  • CentOS7連接XShell與網(wǎng)絡(luò)配置的方法

    CentOS7連接XShell與網(wǎng)絡(luò)配置的方法

    這篇文章主要介紹了如何使用CentOS7連接XShell與網(wǎng)絡(luò)配置的方法,可以更好的幫助大家工作和學習,感興趣的小伙伴可以了解下
    2020-05-05
  • linux curl命令詳解及實例分享

    linux curl命令詳解及實例分享

    curl命令使用了libcurl庫來實現(xiàn),libcurl庫常用在C程序中用來處理HTTP請求,curlpp是libcurl的一個C++封裝,這幾個東西可以用在抓取網(wǎng)頁、網(wǎng)絡(luò)監(jiān)控等方面的開發(fā),而curl命令可以幫助來解決開發(fā)過程中遇到的問題。
    2014-08-08
  • linux把php升級到5.6的實操方法

    linux把php升級到5.6的實操方法

    在本篇文章里小編給大家整理的是關(guān)于linux下如何把php升級到5.6的相關(guān)知識點,需要的朋友們學習下。
    2019-11-11

最新評論