国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux環(huán)境下gdb調(diào)試方法與演示

這篇具有很好參考價值的文章主要介紹了Linux環(huán)境下gdb調(diào)試方法與演示。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人主頁:兜里有顆棉花糖
歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng)
收錄于專欄【Linux專欄】??
本專欄旨在分享學(xué)習(xí)Linux的一點學(xué)習(xí)心得,歡迎大家在評論區(qū)討論??
演示環(huán)境:centos7

如果還未安裝gdb的話,輸入下面命令進行安裝即可:

yum install gdb

一、背景引入

首先,gdb是基于命令行式的調(diào)試工具。

debugrelease是軟件開發(fā)過程中的兩個不同階段或模式。debug用于開發(fā)和調(diào)試軟件,并提供更多的調(diào)試信息和錯誤排查的能力。而release用于最終交付給用戶和客戶的版本,它經(jīng)過優(yōu)化和編譯,以提供更好的性能和較小的體積。

簡單來說就是在軟件開發(fā)階段利用debug模式來進行調(diào)試,而release模式一般用于公司的測試人員進行最終的測試。

debug版本的代碼是可以被調(diào)試的(debug版本的代碼在形成可執(zhí)行程序的時候會有調(diào)試信息),而release版本的代碼不可以調(diào)試(沒有調(diào)試信息)。

在Linux中究竟是使用哪一種模式的代碼呢?我們來看一下:

輸入命令:gdb test
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維
當(dāng)然我們無法直接對代碼進行調(diào)試,我們輸入命令:readelf -S test(讀取一個可執(zhí)行程序的二進制構(gòu)成),請看:
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維
再次發(fā)現(xiàn)其中沒有debug調(diào)試信息,輸入命令(查看debug調(diào)試信息):readelf -S test | grep -i debug,運行結(jié)果如下(發(fā)現(xiàn)什么都沒有):
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

所以,通過以上我們就可以知道gcc編譯是通過release方式進行發(fā)布的,無法進行調(diào)試。

二、如果才能進行debug調(diào)試

我們需要修改Makefile文件,請看:
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

通過make命令形成可執(zhí)行程序如下:
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

輸入命令(查看剛剛新形成的可執(zhí)行程序test-debug的debug信息):readelf -S test-debug | grep -i debug,結(jié)果如下:
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維
之所以test-debug可執(zhí)行程序能夠調(diào)試就是因為上圖中的debug可調(diào)試信息。
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

總結(jié):如果代碼要能夠被gdb調(diào)試工具進行調(diào)試的話,必須由debug發(fā)布,Makefile文件中必須加上-g。

三、gdb常用選項

gdb常用選項如下:

  • listl 行號:顯示源代碼文件,接著上次的位置往下列,每次列10行。
  • listl 函數(shù)名:列出某個函數(shù)的源代碼。
  • rrun:運行程序。
  • nnext:單條執(zhí)行(相當(dāng)于VS中的F10,即逐過程)。
  • sstep:進入函數(shù)調(diào)用(相當(dāng)于VS中的F11,即逐語句)。
  • b/break 行號 :在某一行設(shè)置斷點。
  • break 函數(shù)名:在某個函數(shù)開頭設(shè)置斷點。
  • info binfo break:查看斷點信息。
  • finish:執(zhí)行到當(dāng)前函數(shù)返回,然后停下來等待命令。
  • print(p):打印表達式的值,通過表達式可以修改變量的值或者調(diào)用函數(shù)。
  • p 變量:打印變量值。
  • set var:修改變量的值。
  • ccontinue:從當(dāng)前位置開始連續(xù)而非單步執(zhí)行程序。
  • rrun:從開始連續(xù)而非單步執(zhí)行程序。
  • delete breakpoints:刪除所有斷點。
  • delete breakpoints n:刪除序號為n的斷點。
  • disable breakpointsdisable 斷點序號:禁用斷點。
  • display 變量名:跟蹤查看一個變量,每次停下來都顯示它的值
  • enable breakpointsenable 斷點序號:啟用斷點
  • breaktrace(或bt):查看各級函數(shù)調(diào)用及參數(shù)
  • info(i) locals:查看當(dāng)前棧幀局部變量的值

啟動gdb命令gdb 可執(zhí)行程序

例如:輸入命令:gdb test,結(jié)果如下:
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

有兩種方式可以退出gdb:
方法1:ctrl + d
方法2:q或者quit

通過list 行號來顯示我們編寫的源代碼,演示如下:
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

舉例:info b
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

舉例(顯示斷點信息):b 行號
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

舉例:p 變量
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

舉例(跟蹤查看一個變量,每次停下來都顯示它的值
):display 變量名undisplay 變量名/常顯示變量的序號相反
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

舉例:until X行號:跳至X行
相當(dāng)于跳過一定行數(shù)的代碼塊
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維

舉例:finish執(zhí)行到當(dāng)前函數(shù)返回,然后挺下來等待命令
Linux環(huán)境下gdb調(diào)試方法與演示,Linux專欄,linux,運維文章來源地址http://www.zghlxwxcb.cn/news/detail-729315.html

到了這里,關(guān)于Linux環(huán)境下gdb調(diào)試方法與演示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Linux——gdb調(diào)試器

    Linux——gdb調(diào)試器

    目錄 ? ?前言: 二.gdb定義及指令: 如何查看該exe文件是否為Debug版本?兩種方法: 三.gdb調(diào)試: ? ? ? ??調(diào)試指令1:l指令(小寫L) run指令:運行程序,相當(dāng)于VS中的直接運行不調(diào)試——可簡化輸入r ?break指令:設(shè)置斷點——指令可簡化輸入為b??編輯? info b指令:查看整個代碼

    2024年02月07日
    瀏覽(21)
  • Linux--調(diào)試器:gdb

    Linux--調(diào)試器:gdb

    gcc與g++默認動態(tài)鏈接形成的可執(zhí)行程序(比如a.out)是 release 版本,不可調(diào)試?。?! 如何搞成debug可調(diào)試版本? 查看可執(zhí)行程序存儲了哪些內(nèi)存空間: ? 調(diào)試語法:

    2024年02月13日
    瀏覽(19)
  • Linux調(diào)試器gdb

    Linux調(diào)試器gdb

    本文已收錄至《 Linux知識與編程 》專欄! 作者: ARMCSKGT 演示環(huán)境: CentOS 7? ?? ? 目錄 前言 正文 下載gdb 生成可調(diào)式文件 進入gdb gdb常用指令 查看代碼 l? 運行程序 r? 斷點設(shè)置 b? 顯示信息 info? 查看斷點 info b? 刪除斷點?d? 禁用斷點 disable breakpoints? 啟用斷點 enable brea

    2024年02月14日
    瀏覽(21)
  • Linux - 還不懂 gdb 調(diào)試器?(調(diào)試軟件)

    Linux - 還不懂 gdb 調(diào)試器?(調(diào)試軟件)

    當(dāng)前,我們可以使用 make/makefile 來程序化執(zhí)行代碼文件;可以使用 gcc/g++ 等編譯器來編譯代碼;可以使用 vim 編輯器來編寫代碼;其實在 Linux 當(dāng)中還有一個工具,可以實現(xiàn)調(diào)試工作,這個工具就是 -- gdb。 在了解調(diào)試器之前,你應(yīng)該對代碼的發(fā)布版本做一些了解: 我們在 VS

    2024年02月07日
    瀏覽(21)
  • 【Linux】Linux下調(diào)試器gdb的使用

    【Linux】Linux下調(diào)試器gdb的使用

    ??作者主頁:@安 度 因 ??學(xué)習(xí)社區(qū):StackFrame ??專欄鏈接:Linux 如果無聊的話,就來逛逛 我的博客棧

    2024年02月19日
    瀏覽(29)
  • Linux調(diào)試器之gdb

    Linux調(diào)試器之gdb

    我們前面介紹了幾個基本的環(huán)境開發(fā)工具。例如通過yum我們可以安裝和卸載軟件、通過vim我們可以寫代碼、通過gcc和g++我們可以編譯代碼成可執(zhí)行程序。但是如何在Linux下調(diào)試代碼呢?我們并未介紹,本期我們將來介紹最后一個工具 --- 調(diào)試器gdb。 程序的發(fā)布方式 gdb基本的調(diào)

    2024年04月16日
    瀏覽(37)
  • Linux系統(tǒng)gdb調(diào)試常用命令

    GDB(GNU調(diào)試器)是一款常用的調(diào)試工具,用于調(diào)試C、C++等編程語言的程序。以下是一些常用的GDB命令: 1. 啟動程序: ? ?- `gdb executable`:啟動GDB調(diào)試器,并加載可執(zhí)行文件。 2. 設(shè)置斷點: ? ?- `break line`:在指定行設(shè)置斷點。 ? ?- `break function`:在指定函數(shù)的入口處設(shè)置斷

    2024年02月10日
    瀏覽(36)
  • 在linux中的GDB調(diào)試一些用法

    -g: 選項的作用是在可執(zhí)行文件中加入源代碼的信息 -Wall:盡量不影響程序行為的情況下選項打開所有warning program:為程序名 help:使用幫助 gdb:啟動程序 quit:退出調(diào)試 set args num1 num2 …:設(shè)置程序中需要的參數(shù)(就是cin需要接收的值) show args:展示參數(shù) list或者l :從默認位

    2024年02月05日
    瀏覽(26)
  • Linux的調(diào)試工具 - gdb(超詳細)

    Linux的調(diào)試工具 - gdb(超詳細)

    程序的發(fā)布方式有兩種,debug模式和release模式 Linux gcc/g++出來的二進制程序,默認是release模式 要使用gdb調(diào)試,必須在源代碼生成二進制程序的時候, 加上 -g 選項,發(fā)布成debug模式 注: 如果沒有斷點,程序?qū)⑦\行到底 注: 單條執(zhí)行需要在調(diào)試啟動的情況下進行,需要先打斷點

    2024年02月07日
    瀏覽(20)
  • 【linux】git和gdb調(diào)試工具

    【linux】git和gdb調(diào)試工具

    這兩個步驟用于識別提交代碼的身份,一個你的名字,一個你的郵箱 開啟本地倉庫 克隆本地倉庫成功 我們將這個倉庫拷到了111目錄底下. 我們發(fā)現(xiàn)少了一個.gitignore,因為.gitignore是隱藏文件,所以使用ls -la查看 用于查看提交狀態(tài) 上面可以看到提交人的信息,以及時間,以及提

    2024年02月22日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包