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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CTF工具-gdb简介

發布時間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTF工具-gdb简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gdb簡介

gdb是 GNU 開發的一個Unix/Linux下強大的程序調試工具。
使用 gdb 進行程序調試之前,gcc編譯選項加上 -g 選項來講調試信息加到可執行文件里
一般來說,GDB主要幫助你完成下面四個方面的功能:
1、啟動你的程序,可以按照你自定義的要求隨心所欲的運行程序。
2、可以讓調試程序在你所指定的位置的斷點處停止。
3、當程序停止時,可以檢查此時你的程序里所發生的事情。
最后,動態的改變你程序的執行環境。

使用GDB

一般來說GDB主要調試的是C/C++程序。要調試C/C++程序,首先在編譯時,我們需要把調試信息加到可執行文件里。使用編譯器(cc/gcc/g++)的-g參數可以做到這一點,如:
$ cc –g hello.c –o hello
$ g++ -g hello.cpp –o hello
如果沒有-g,你將看不見程序的函數名,變量名,所代替的全是運行的內存地址。當你用-g把調試信息假如之后,并成功編譯目標代碼以后,可以用GDB調試它。

一.運行

run(簡記為 r)其作用是運行程序,當遇到斷點后,程序會在斷點處停止運行,等待用戶輸入下一步的命令。
continue (簡寫c )繼續執行,到下一個斷點處(或運行結束)
next(簡寫 n)單步跟蹤程序,當遇到函數調用時,也不進入此函數體;此命令同 step 的主要區別是,step 遇到用戶自定義的函數,將步進到函數里去運行,而 next 則直接調用函數,不會進入到函數體內。
step(簡寫s)單步調試如果有函數調用,則進入函數;與命令n不同,n是不進入調用的函數的
until當你厭倦了在一個循環體內單步跟蹤時,這個命令可以運行程序直到退出循環體。
until+行號運行至某行,不僅僅用來跳出循環
finish運行程序,直到當前函數完成返回,并打印函數返回時的堆棧地址和返回值及參數值等信息。
call函數(參數)調用程序里可見的函數,并傳遞“參數”,如:call gdb_test(55)
quit(簡記為 q)退出gdb

二.設置斷點

break n (簡寫b n)在第n行處設置斷點,可以直接對某個cpp設置斷點 b xxx.cpp:36, 36行設置斷點
b fn1 if a>b條件斷點設置
break func(break縮寫為b)在函數func()的入口處設置斷點,如:break cb_button
delete 斷點號n刪除第n個斷點
disable 斷點號n暫停第n個斷點
enable 斷點號n開啟第n個斷點
clear 行號n清除第n行的斷點
info b (info breakpoints)顯示當前程序的斷點設置情況
delete breakpoints清除所有斷點

三.查看源代碼

list (簡記為 l )其作用就是列出程序的源代碼,默認每次顯示10行。
list 行號將顯示當前文件以“行號”為核心的前后10行代碼,如:list 12
list 函數名將顯示“函數名”所在函數的源代碼,如:list main
list不帶參數,將接著上一次 list 命令的,輸出下邊的內容。

四.打印表達式

print 表達式(簡記為 p)其“表達式”可以為任何當前正在被測試程序的有效表達式,比如當前正在調試C語言的程序,那么“表達式”可以是任何C語言的有效表達式,包括數字,變量甚至是函數調用。
print a將顯示整數 a 的值
print ++a將把 a 里的值加1,并顯示出來
print name將顯示字符串 name 的值
print gdb_test(22)將以整數22作為參數調用 gdb_test() 函數
print gdb_test(a)將以變量 a 作為參數調用 gdb_test() 函數
display 表達式在單步運行時將非常有用,使用display命令設置一個表達式后,它將在每次單步進行指令后,緊接著輸出被設置的表達式及值。如: display a
watch 表達式設置一個監視點,一旦被監視的“表達式”的值改變,gdb將強行終止正在被調試的程序。如: watch a
whatis查詢變量或函數
info function查詢函數
擴展info locals顯示當前堆棧頁的所有變量

五.查詢運行信息

where/bt當前運行的堆棧列表;
bt backtrace顯示當前調用堆棧
up/down改變堆棧顯示的深度
set args 參數指定運行時的參數
show args查看設置好的參數
info program來查看程序的是否在運行,進程號,被暫停的原因

總結

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

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