国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學習啦 > 學習電腦 > 操作系統(tǒng) > Linux教程 > linux下gdb常用的調(diào)試命令

    linux下gdb常用的調(diào)試命令

    時間: 志藝942 分享

    linux下gdb常用的調(diào)試命令

      用gdb調(diào)試程序時,常常很困惑一些命令的使用,要么是不知道這個命令,要么忘了命令的使用方法。接下來是小編為大家收集的linux下gdb常用的調(diào)試命令,希望能幫到大家。

      linux下gdb常用的調(diào)試命令

      gdb常用:

      run 啟動程序運行

      next 單步執(zhí)行(不到函數(shù)內(nèi)部)

      step 單步執(zhí)行,跟蹤到函數(shù)內(nèi)部

      finish 繼續(xù)執(zhí)行,直到當前函數(shù)結(jié)束

      continue 繼續(xù)執(zhí)行,直到下一個斷點

      jump 9 直接跳到指定行

      list 顯示源碼

      l 3,10 顯示特定范圍的源碼 l main顯示函數(shù)的源碼

      set listsize 50 修改源碼顯示行數(shù)

      break 設(shè)置斷點

      b main設(shè)置函數(shù)斷點

      b 9 設(shè)置指定行斷點

      b 將下一行設(shè)置為斷點

      b test if a == 10 設(shè)置條件斷點

      delete 刪除斷點

      d 3 刪除指定的斷點

      condition 修改條件 condition 4 a == 90

      info 查看信息

      info threads 查看線程信息

      info breakpoints 查看斷點信息

      info locals 顯示局部變量

      info args 顯示函數(shù)變量

      info registers 顯示寄存器數(shù)據(jù)

      thread 2 切換線程

      where 查看調(diào)用堆棧(bt 或者 info s)

      frame 查看當前堆棧幀

      frame 8 查看指定堆棧幀信息

      info frame 查看當前堆棧幀更詳細的信息

      print a 打印變量信息

      print/x a 十六進制輸出變量信息

      print a + b 可以進行表達式計算

      print $eax 顯示某個寄存器的數(shù)據(jù)

      x/nfu 0×300098 顯示指定地址的內(nèi)存數(shù)據(jù)

      n 顯示內(nèi)存單位,長度

      f 格式(除了 print 格式外,還有 字符串s 和 匯編 i)

      u 內(nèi)存單位(b: 1字節(jié); h: 2字節(jié); w: 4字節(jié); g: 8字節(jié))

      set vairiable a = 100 可以修改變量的值

      commands 指定到了特定斷點后執(zhí)行的命令序列

      whatis buf 顯示變量的類型

      dump memory 輸出文件名 內(nèi)存起始地址 內(nèi)存終止地址

      restore 文件名 binary 起始位置

      watch buf buf的值一旦改變,會觸發(fā)watchpoint

      奇淫技巧:

      cat ~/.gbinit gdb會從這個文件讀取配置

      cat ~/.gdb_history

      呵呵,對于gdb時想要查看長的字符串老是顯示不全,怎么半呢,gdb參看數(shù)組字符串時默認只是顯示部分的數(shù)據(jù),通過這個命令可以修改:

      set print elements 0 默認這里設(shè)置是200,設(shè)置為0表示沒有限制

      還有其它一些set命令可以試試:

      set print address

      set print address on

      打開地址輸出,當程序顯示函數(shù)信息時,GDB會顯出函數(shù)的參數(shù)地址。系統(tǒng)默認為打開的

      set print object <on/off>

      在C++中,如果一個對象指針指向其派生類,如果打開這個選項,GDB會自動按照虛方法調(diào)用的規(guī)則顯示輸出,如果關(guān)閉這個選項的話,GDB就不管虛函數(shù)表了。這個選項默認是off

      show print pretty

      查看GDB是如何顯示結(jié)構(gòu)體的

      set print array

      set print array on

      打開數(shù)組顯示,打開后當數(shù)組顯示時,每個元素占一行,如果不打開的話,每個元素則以逗號分隔。這個選項默認是關(guān)閉的

      set print null-stop <on/off>

      如果打開了這個選項,那么當顯示字符串時,遇到結(jié)束符則停止顯示。這個選項默認為off

      set print pretty on

      如果打開printf pretty這個選項,那么當GDB顯示結(jié)構(gòu)體時會比較漂亮

      set print union <on/off>

      設(shè)置顯示結(jié)構(gòu)體時,是否顯式其內(nèi)的聯(lián)合體數(shù)據(jù)。例如有以下數(shù)據(jù)結(jié)構(gòu)

      p string+n顯示偏移n后的字符串內(nèi)容,這個使用起來也是比較方便的


    看了“linux下gdb常用的調(diào)試命令”還想看:

    1.linux如何調(diào)試多進程程序

    2.c++程序員簡歷模板

    3.Linux系統(tǒng)查看當前時間的命令

    4.Linux命令行中網(wǎng)速怎么測試

    5.必學100個常用linux命令大全

    2805207