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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C学习笔记-gdb

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C学习笔记-gdb 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gdb即GNU debugger,用來調試程序

gdb使用前提

要使用gdb,則需要在編譯源代碼時候使用-g參數

gcc -g –o test test.c

啟動gdb

gdb 程序名 [corefile]

corefile是可選的,但能增強gdb的調試能力
Linux默認是不生成corefile的,所以需要在用戶profile文件中添加ulimit -c unlimited,修改完成之后讓profile文件及時生效
另外程序錯誤時候會生成core或者core.*文件,也可作為其參數

gdb的使用

快速定位軟件出錯位置

  • 啟動gdb調試錯誤
gdb test core
  • 關閉多余軟件信息
gdb -q test core

如果軟件出錯,就會打印出出錯的語句

使用gdb調試

  • 啟動gdb
gdb test
  • 運行程序
(gdb) run
  • 顯示導致段錯誤的執行函數樹
(gdb) where
  • 顯示包含錯誤附近代碼
(gdb) list [m,n]

m,n為可選參數,表示起始行和結尾行
不帶參數默認顯示附近10行

  • 顯示表達式、變量的值
(gdb) print 變量(表達式) (gdb) print 'file'::變量(表達式) ##''是必須的,以便讓gdb知道指的是一個文件名。 (gdb) print funcname::變量(表達式)

e.g.

(gdb) print i
  • 變量的類型
(gdb) whatis i
  • 結構的定義
(gdb) ptype st

gdb的斷點使用

  • break命令設置斷點
break linenum break funcname break filename:linenum break filename:funcname
  • 進入gdb調試模式
gdb -q test (gdb) break 5 (gdb) run

以上是進入gdb調試,在代碼第5行設置斷點,運行程序

  • 查看已設置斷點
(gdb) info break
  • 從斷點以后繼續執行
(gdb) continue
  • 刪除一個斷點
(gdb) delete
  • 改變一個變量的值
(gdb) set variable varname = value
  • step命令
    當遇到一個函數的時候,step將進入函數,每次執行一條語句,相當于step into
(gdb) step
  • next命令
    當遇到一個函數的時候,next將執行整個函數,相當于step over
(gdb) next
  • return [value]命令
    停止執行當前函數,將value返回給調用者,相當于step return
(gdb) return [value]

轉載于:https://www.cnblogs.com/cj5785/p/10664754.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C学习笔记-gdb的全部內容,希望文章能夠幫你解決所遇到的問題。

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