CTF工具-gdb简介
生活随笔
收集整理的這篇文章主要介紹了
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調試它。
一.運行
| continue (簡寫c ) | 繼續執行,到下一個斷點處(或運行結束) |
| next(簡寫 n) | 單步跟蹤程序,當遇到函數調用時,也不進入此函數體;此命令同 step 的主要區別是,step 遇到用戶自定義的函數,將步進到函數里去運行,而 next 則直接調用函數,不會進入到函數體內。 |
| step(簡寫s) | 單步調試如果有函數調用,則進入函數;與命令n不同,n是不進入調用的函數的 |
| until | 當你厭倦了在一個循環體內單步跟蹤時,這個命令可以運行程序直到退出循環體。 |
| until+行號 | 運行至某行,不僅僅用來跳出循環 |
| finish | 運行程序,直到當前函數完成返回,并打印函數返回時的堆棧地址和返回值及參數值等信息。 |
| call函數(參數) | 調用程序里可見的函數,并傳遞“參數”,如:call gdb_test(55) |
| quit(簡記為 q) | 退出gdb |
二.設置斷點
| 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 行號 | 將顯示當前文件以“行號”為核心的前后10行代碼,如:list 12 |
| list 函數名 | 將顯示“函數名”所在函數的源代碼,如:list main |
| list | 不帶參數,將接著上一次 list 命令的,輸出下邊的內容。 |
四.打印表達式
| 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 | 顯示當前堆棧頁的所有變量 |
五.查詢運行信息
| bt backtrace | 顯示當前調用堆棧 |
| up/down | 改變堆棧顯示的深度 |
| set args 參數 | 指定運行時的參數 |
| show args | 查看設置好的參數 |
| info program | 來查看程序的是否在運行,進程號,被暫停的原因 |
總結
以上是生活随笔為你收集整理的CTF工具-gdb简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jackson 注解,java
- 下一篇: 2018北京大学计算机考研分数线,201