GDB調試

  1. 安裝GDB

      1.1 源碼安裝sass

        1.1.1 http://ftp.gnu.org/gnu/gdb/下載gdb源碼包,或者wget http://ftp.gnu.org/gnu/gdb/gdb-8.0.1.tar.gz命令下載代碼函數

        1.1.2 tar -zxvf gdb-8.0.1.tar.gzui

        1.1.3 ./configurespa

        1.1.4 make命令行

        1.1.5 sudo make install調試

        1.1.6 查看是否安裝成功  gdb -vcode

      1.2 命令安裝                                blog

          1.2.1 #sudo apt-get update
          1.2.2 #sudo apt-get install gdb
2. 快速入門

      2.1 vi一段代碼        進程

#include <stdio.h>

int main()
{
  int a = 1;
  int b = a;

  printf("a = %d, b =%d\n", a, b);

  return 0;
}

                  2.2 帶調試信息編譯ip

gcc –o demo demo.c -g

     2.3 進入GDB

gdb demo

     2.4 加斷點

breakpoint demo.c:8

  3. 經常使用命令

命令

描述

backtrace(bt)

查看各級函數調用及參數

finish

連續運行到當前函數返回爲止,而後停下來等待命令

frame(f)  幀編號

選擇棧幀

info(i)  locals

查看當前棧幀局部變量的值

list(l)

列出源代碼,接着上次的位置往下列,每次列十行

list  行號

列出第幾行開始的源代碼

list  函數名

列出某個函數的源代碼

next(n)

執行下一行語句

print(p)

打印表達式的值,經過表達式的值能夠修改變量的值或者調用函數

quit(q)

退出gdb調試環境

set  var

修改變量的值

start

開始執行程序,停在main函數第一行語句前面等待命令

step(s)

執行下一行語句,若是有函數則進入到函數中

break(b)  行號

在某一行設置斷點

break  函數名

在某個函數開頭設置斷點

break(b)… if…

設置條件斷點

continue(c)

從當前位置開始連續運行程序

delete breakpoints 斷點號

刪掉此號的斷點

display  變量名

跟蹤查看某個變量,每次停下來都顯示它的值

disable  breakpoints 斷點號

禁用此斷點

enable  斷點號

啓用此斷點

info(i)  breakpoints

查看當前設置了哪些斷點

run(r)

從頭開始連續運行程序

undisplay  跟蹤顯示行號

取消跟蹤顯示

watch

設置觀察點

info(i)   watchpoints

查看當前設置了哪些觀察點

x

從某個位置開始打印存儲單元的內容,所有當成字節來看,而不區分哪一個字節屬於哪一個變量

disassemble

反彙編當前函數或者指定的函數,單獨用disassemble命令是反彙編當前函數,若是disassemble命令後面跟函數名或地址則反彙編指定的函數

si 能夠一條指令一條指令地單步調試。
info  registers 能夠顯示全部寄存器的當前值。在gdb中表示寄存器名時前面要加個$,例如p $esp能夠打印esp寄存器的值。
set  args  'command-line' 給執行的程序傳命令行參數
set follow-fork-mode child/parent 設置gdb在fork以後跟蹤子進程/父進程
s(stepin) 進入子函數

     4. attach調試

      1. ps aux查看系統進程pid

      2. gdb attach pid進入調試改程序

    5. 推薦連接:

      1. https://www.kancloud.cn/wizardforcel/gdb-tips-100/146708

相關文章
相關標籤/搜索