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来查看程序的是否在运行,进程号,被暂停的原因

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 递归函数 - Python零基础入门教程

目录 一.Python 递归函数案例 1.Python 递归函数案例一2.Python 递归函数案例二3.Python 递归函数案例三 二.Python 递归函数总结三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一个函数在函数体内部调用自己,这样的函数称为…

Cloud一分钟 | 云存储服务商​Egnyte获7500万美元E轮融资,高盛领投

Hello,everyone:10月12日早,星期五,祝大家工作愉快!一分钟新闻时间:完1.微信群:添加小编微信:tangguoyemeng,备注“进群姓名公司职位”即可,加入【云计算学习…

vuex modules ajax,VUE项目爬坑---6、vuex的真正存在的意义是什么

VUE项目爬坑---6、vuex的真正存在的意义是什么一、总结一句话总结:a、【避免低效的数据传递】:当多个组件嵌套的时候,只能父子传递,那么中间的组件只能做传递数据之用,数据不是它用,它却传递数据&#xff0…

CTF工具-gdb插件peda,pwndbg安装

gdb插件peda安装 安装很简单,到github上面它的教程就有 地址:https://github.com/longld/peda 安装流程: $git clone https://github.com/longld/peda.git ~/peda $echo “source ~/peda/peda.py” >> ~/.gdbinit $echo “DONE! debug your program with gdb…

Python sys模块 - Python零基础入门教程

目录 一.Python sys 模块简介二.Python sys 模块使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在Python sys 模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数!关于 sys 模块在官网…

为什么阿里飞猪、滴滴、携程都被质疑滥用大数据杀熟?

技术本无罪,用的人多了,自然成为掩盖人性罪恶的根源。支撑「互联网」时代的大数据是如何一步一步沦落成利益的刽子手的?2018 年,「大数据杀熟」一词开始进入大众视野,且在互联网领域掀起了腥风血雨。近日,更…

电脑服务器传文件夹吗,服务器和电脑传文件夹吗

服务器和电脑传文件夹吗 内容精选换一换Model File:模型文件。单击右侧的文件夹图标,在后台服务器sample所在路径(工程目录/run/out/test_data/resnet-18/model)选择需要转化的模型对应的*.prototxt文件,并上传。Weight File:权重文件。请自行从https://…

BugkuCTF-MISC题1和0的故事

基础知识: PIL PIL是Python Imaging Library,它为python解释器提供了图像编辑功能。 PIL.Image.new()方法通过给定的模式和大小创建一个新图像。尺寸以(width,height)-tuple,以像素为单位。对于单波段图像,颜色作为单个值给出,对…

Python time 模块 - Python零基础入门教程

目录 一.前言二.Python time 模块常用函数介绍三.Python time 模块使用 1.Python time 模块获取时间2.Python time 模块自定义时间格式3.Python time 模块查看代码执行时间 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Python time 模…

面趣 | 这道微软面试题你会吗?

参加 2018 AI开发者大会,请点击 ↑↑↑问面试题目:两个单词如果包含相同的字母,次序不同,则称为字母易位词(anagram)。例如,“silent”和“listen”是字母易位词,而“apple”和“aplee”不是易位词。请定义…

2003文件共享服务器搭建,用Windows Server 2003搭建安全文件服务器(2)

选择“使用自定义共享和文件夹权限”,点击自定义按钮之后弹出自定义权限设置界面。在这里可以根据需要对不同用户设置不同的权限,例如可以对 Administrators用户组设置完全控制以赋予所有管理员对该共享文件夹的全部管理权限,为Guest用户设置…

BugkuCTF-MISC题baby_flag.txt

下载附件得到一个压缩包baby_flag.zip 打开得到baby_flag.txt,直接点击打开发现乱码 通过010editor打开观察发现这是一个图片文件 将文件后缀改为.jpeg得到一张图片 通过binwalk -e …未分离出有价值的信息 在010editor发现有RAR压缩包的头 将这一部分数据复制…

Python random 模块 - Python零基础入门教程

目录 一.Python random 模块常用函数介绍二.Python random 模块使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Python random 模块包括返回随机数的函数,可以用于模拟或者任何产生随机输出的程序。 一.Python random 模…

云漫圈 | 计数排序,你真的了解么?

参加 2018 AI开发者大会,请点击 ↑↑↑————— 第二天 —————————————————假定20个随机整数的值如下:9,3,5,4,9,1,2,7,8,1&…

BugkuCTF-MISC题blind_injection

下载附件 方法一: 下载用wireshark打开 题目说的是盲注,而注入一般都是走的http,直接导出http对象,再根据大小排序 得到flag 方法二: 若HTTP对象列表点击大小无反应 将其导出,命名为output 在文件夹里查…

ubuntu服务器ssh登录密码修改,Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器...

修改root用户密码打开终端,输入 sudo passwd root 指令:安装SSH服务ssh默认端口号是22,可以在/etc/ssh/sshd_config文件中修改查看服务器否开启:netstat -tlp启动服务:sudo /etc/init.d/ssh start重启服务:…

Python json模块 - Python零基础入门教程

目录 一.前言二.python json 模块常用函数三.json 转 Python 字典 dict四.Python 字典 dict 转 json五.关于 json.dump 和 json.load六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 JSON 的全称是 JavaScript Object Notation&…

Cloud一分钟 | 英国发布大规模遗传数据;德国电信与华为联合发布PLAS云连接服务...

Hello,everyone:10月15日早,星期一,祝大家工作愉快!一分钟新闻时间:★ 百度云与智慧农业的头部企业强强联合,共建ABC智能农业生态。★ 德国电信与华为联合发布PLAS云连接服务。★ 英国发布大规模…

“汉堡+奶昔”怎么就成了精致生活的热门标签?

图片来源:视觉中国文章来源:DT财经“左手汉堡,右手奶昔,这是新天地Coco的时髦新日常。最近沪上刮起一阵打卡新风潮,汉堡竟然成了标记城市美好生活的一大利器。还在纠结晚餐去金拱门还是汉堡王的DT君,发现自…

揭开互联网公司的神秘面纱,数据解读那些slay整个行业的互联网公司

前言:随着互联网行业的日益兴盛,吸引力越来越多的牛人加入其中,也有许多小伙伴跃跃欲试,想要在互联网的浪潮中大展身手。今天我们通过看准网的数据,帮助大家对各大互联网公司有一个比较概括的了解。01.数据来源看准网提…