最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

斷點(diǎn)

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

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

案例:

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

對(duì)斷點(diǎn)的相關(guān)操作

  • delete 刪除所有斷點(diǎn)
  • delete breakpoint [n] 刪除某個(gè)斷點(diǎn)
  • disable breakpoint [n] 禁用某個(gè)斷點(diǎn)
  • enable breakpoint [n] 使能某個(gè)斷點(diǎn)
  • info breakpoints [n] 查看當(dāng)前斷點(diǎn)信息

觀察點(diǎn)

捕捉點(diǎn)用來補(bǔ)捉程序運(yùn)行時(shí)的一些事件。如:載入共享庫(動(dòng)態(tài)鏈接庫)、C++的異常等。通常也是用來定位bug。

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

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

可以通過info watchpoints [n]命令查看當(dāng)前觀察點(diǎn)信息

查看變量

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

 (gdb) print {變量名}

(gdb) print argc
$1 = 1

如果打印數(shù)組,由于默認(rèn)的設(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,顯示當(dāng)前文件的10到20行

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

使用如下命令啟動(dòng)gdb: gdb -tui 項(xiàng)目名 或者在啟動(dòng)gdb后, 輸入命令focus,如圖:

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

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

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

在特定線程中中斷

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

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

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

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

當(dāng)你的程序被GDB停住時(shí),所有的運(yùn)行線程都會(huì)被停住。這方便你你查看運(yùn)行程序的總體情況。而在你恢復(fù)程序運(yùn)行時(shí),所有的線程也會(huì)被恢復(fù)運(yùn)行。那怕是主進(jìn)程在被單步調(diào)試時(shí)。

總結(jié)

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

相關(guān)文章

  • 在Linux中如何查找最大的10個(gè)文件方法匯總

    在Linux中如何查找最大的10個(gè)文件方法匯總

    這篇文章主要給大家介紹了關(guān)于在Linux中如何查找最大的10個(gè)文件的一些方法,文中分別給大家介紹了四種方法,沒種方法都通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Linux 下C語言連接mysql實(shí)例詳解

    Linux 下C語言連接mysql實(shí)例詳解

    這篇文章主要介紹了Linux 下C語言連接mysql實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • linux系統(tǒng)虛擬主機(jī)開啟支持Swoole Loader擴(kuò)展的方法

    linux系統(tǒng)虛擬主機(jī)開啟支持Swoole Loader擴(kuò)展的方法

    這篇文章主要介紹了linux系統(tǒng)虛擬主機(jī)開啟支持Swoole Loader擴(kuò)展的方法,需要的朋友可以參考下
    2020-12-12
  • 安裝ubuntu時(shí)黑屏的解決辦法(3種)

    安裝ubuntu時(shí)黑屏的解決辦法(3種)

    這篇文章主要介紹了安裝ubuntu時(shí)黑屏的解決辦法(3種),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Ubuntu Server 10.04修改Apache的默認(rèn)目錄的方法

    Ubuntu Server 10.04修改Apache的默認(rèn)目錄的方法

    這篇文章主要為大家分享下Ubuntu Server 10.04修改Apache的默認(rèn)目錄的方法,需要的朋友可以參考下
    2013-12-12
  • inux下gettimeofday函數(shù)windows替換方法(詳解)

    inux下gettimeofday函數(shù)windows替換方法(詳解)

    下面小編就為大家?guī)硪黄猧nux下gettimeofday函數(shù)windows替換方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Linux中使用命令more,less,cat查看文件內(nèi)容

    Linux中使用命令more,less,cat查看文件內(nèi)容

    今天小編就為大家分享一篇關(guān)于Linux中使用命令more,less,cat查看文件內(nèi)容,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 在Linux系統(tǒng)下如何編譯并執(zhí)行C++程序

    在Linux系統(tǒng)下如何編譯并執(zhí)行C++程序

    這篇文章主要介紹了在Linux系統(tǒng)下如何編譯并執(zhí)行C++程序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 解決啟動(dòng)php-fpm后訪問不到php文件的辦法

    解決啟動(dòng)php-fpm后訪問不到php文件的辦法

    今天碰了一個(gè)很奇怪的問題,當(dāng)啟動(dòng)php-fpm后,發(fā)現(xiàn)居然訪問不到php文件了,后來通過查看日志、分析+搜索終于解決了,現(xiàn)在將整個(gè)過程分享給大家,也方便同樣遇到這個(gè)問題的同學(xué)們參考借鑒,下面來一起看看吧。
    2016-12-12
  • 一文詳解Linux中的fork機(jī)制

    一文詳解Linux中的fork機(jī)制

    fork() 是一種系統(tǒng)調(diào)用,用于在操作系統(tǒng)中創(chuàng)建新進(jìn)程,當(dāng) fork() 被調(diào)用時(shí),會(huì)生成一個(gè)當(dāng)前進(jìn)程的副本(稱為子進(jìn)程),而原始進(jìn)程則被稱為父進(jìn)程,本文給大家詳細(xì)介紹了Linux中的fork機(jī)制,需要的朋友可以參考下
    2025-03-03

最新評(píng)論

潼关县| 寿阳县| 虎林市| 凤台县| 革吉县| 安化县| 中山市| 乐业县| 左贡县| 郴州市| 阿拉尔市| 荥阳市| 德惠市| 滦南县| 阿合奇县| 遂宁市| 瑞昌市| 宜春市| 云霄县| 瑞丽市| 阿鲁科尔沁旗| 衡山县| 锦州市| 吴旗县| 临沂市| 囊谦县| 嘉兴市| 剑川县| 黄龙县| 宁安市| 巢湖市| 郑州市| 深圳市| 西丰县| 滨海县| 清流县| 攀枝花市| 秭归县| 三明市| 奉贤区| 正定县|