日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gdb日常使用

發布時間:2024/1/17 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gdb日常使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gdb 是一個由 GNU 開源組織發布的、UNIX/LINUX 操作系統下的、基于命令行的、功能強大的程序調試工具。當然了,一般都是使用 gdb 調試 c/cpp 程序。

一般來說,GDB主要幫忙你完成下面四個方面的功能:

  • 啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。
  • 可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)
  • 當程序被停住時,可以檢查此時你的程序中所發生的事。
  • 動態的改變你程序的執行環境。
  • gdb 功能很強大,因此命令也很多,但是并不見得都能用得到,對于日常使用來說,知道一些常用的就夠用了。

    準備工作

    代碼在編譯時要加上 -g 選項,生成的可執行文件才能用 gdb 進行源碼級調試。
    比如,gcc -g main.c -o main。
    -g 選項的作用是在可執行文件中加入源代碼的信息,比如可執行文件中第幾條機器指令對應源代碼的第幾行,但并不是把整個源文件嵌入到可執行文件中,所以在調試時必須保證gdb能找到源文件。

    參數說明

    list/l

    list linenum,打印出以 linenum 行為中心的上下幾行源碼。
    list func,打印以函數 func 定義所在行為中心的上下幾行代碼。
    list, 打印當前行后面的源程序,每次10行。

    run/r

    運行程序至第一個斷點處停止。

    break/b

    break linenum,在第 linenum 處設置一個斷點。
    break func,在 func 函數入口處設置一個斷點。

    d

    d 斷點num,刪除第 num 個斷點。

    step/s

    執行一行源程序代碼,如果此行代碼中有函數調用,則進入該函數。

    next/n

    與 step 相反,n 表示不進入函數內容,繼續執行。

    print/p

    print 變量名,打印出變量值。

    backtrace/bt

    查看各級函數調用及參數。

    frame/f

    frame 幀編號,選擇棧幀。

    set

    set var 變量=值,修改某變量的值。
    或者用 print 指令也能達到目的。

    finish

    讓程序一直運行到從當前函數返回為止。

    info/i

    info break,查看所有已經設置的斷點信息。
    info locals,查看當前棧幀局部變量的值。

    shell

    不離開 gdb 就執行 UNIX shell 命令

    help/h

    獲取幫助信息。

    quit/q

    離開 gdb。

    注意: 上述命令幾乎都可以使用首字母來簡寫長命令。

    調試 coredump 文件

    gdb 可執行文件 產生的coredump文件,比如,gdb test core.3533。

    參考

  • Linux gdb調試器用法全面解析
  • 使用gdb調試程序完全教程
  • 總結

    以上是生活随笔為你收集整理的gdb日常使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。