记录 | gdb调试的基本命令

r (run)

运行程序

b (breakpoint)

打断点,比如 b func(打到函数)

b 5(打到第5行)(当前文件)

b main.cpp:5(main.cpp的第5行)

b MyClass::func() (打到类的成员函数func()、在类内可以 p this 打印、p *this、p this->name)

tb (temporary breakpoint)

临时断点,用法同 b

c (continue)

继续执行代码,直到下一个断点

n (next)

执行下一行代码,但是不会进入函数内部

s (step)

执行下一行代码,并进入函数内部 (单步调试)

如果陷入步进后,可以按c跳出继续执行代码

p (print)

打印变量的值

bt (backtrace)

打印函数调用栈

f (finish)

执行到当前函数返回为止

d (delete)

删除断点,d <breakpoint number> 删除指定断点

d 删除所有断点

cl (clear)

同delete,也是删除断点,cl <breakpoint number> 删除指定断点

cl 删除所有断点

watch

监视一个变量或者一段内存

比如监视 n => watch n

条件监视 => watch n if n >= 2

awatch

监视写

rwatch

监视读

g 或 k

退出调试器

tui enable

吊炸天的图形界面调试

layout src

同为吊炸天的图形界面调试

layout asm

显示为汇编语言

u (until)

快速运行完当前的循环体,并运行至循环体外停止

i b

查看断点信息,相当于 info breakpoints

一些小技巧


  • gdb的带参调试:先正常进入gdb调试模式:gdb build/main,然后 run 的时候带参进入,如 r -l -a -o a.txt 等。

这样第二次 run 的时候会带同样的参数


  • 启动 gdb 调试的时候,使用命令 gdb "build main" -ex 'b main',这样启动后会自动跳转到main函数

  • 同理,也可以通过刚才的 -ex 命令指定多个命令

调试配置的保存
  • 进入gdb调试模式后,比如设置了一些断点后,想要把这些配置保存下来 (这里主要指断点的设置),则

save breakpoints codingai.gdb,然后下次再进入调试时加载 source codingai.gdb,这样就重新把调试配置加载进来了


要在两个不同的终端调试

先启一个 main,然后到另一个终端

查找进程pid

ps -A | grep main# 或pidof main
# 比如 312312

则继续,在另一个终端中

sudo gdb# 加载符号
attach 312312

接下来可以正常调试,且两个终端之间是不影响的

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

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

相关文章

ctfshow(web190-web200)

目录 web190 web191 web192 web193 web194 web195 web196 web197 web198 web199 web200 web190 为什么要有admin呢 这也是试出来的 这个admin必须是数据库中存在的 这样才能使用布尔注入 因为这个时候登录 有两种返回结果 一种密码错误 一种就是用户名错误 admin an…

前端性能监控和错误监控

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Ubuntu 常用命令之 passwd 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 在Ubuntu系统中&#xff0c;passwd命令用于更改用户的密码。系统管理员可以使用此命令更改任何用户的密码&#xff0c;而普通用户只能更改自己的密码。 passwd命令的参数如下 -l, --lock&#xff1a;锁定密码&#xff0c;使账户…

拥抱鸿蒙 - 在展讯T606平台上的探索与实践

前 言 自OpenHarmony 问世后受到了社会各界的广泛关注&#xff0c;OpenHarmony 的生态系统在如火如荼的发展。 酷派作为一家积极拥抱变化的公司&#xff0c;经过一段时间的探索与实践&#xff0c;成功实现将OpenHarmony 系统接入到展讯平台上&#xff0c;我们相信这是一个重要…

Android Studio 安装和使用

前些天&#xff0c;打开了几年前的一个Android Studio app项目&#xff0c;使用安卓虚拟机仿真app崩溃&#xff0c;怀疑是不是中间升级过Android Studio导致异常的&#xff0c;马上脑子一热卸载了&#xff0c;结果上次踩过的坑&#xff0c;一个没少又踩一次&#xff0c;谨以此文…

大数据技术基本功-数据采集

产品指南&#xff5c;DataScale自定义采集器功能介绍产品指南&#xff5c;开发 DataScale Collector​​​​​​​

python用什么软件编写程序,python编写的软件有哪些

大家好&#xff0c;本文将围绕python用什么软件编写程序展开说明&#xff0c;python编写的软件有哪些是一个很多人都想弄明白的事情&#xff0c;想搞清楚用什么软件编写python需要先了解以下几个事情。 大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python可以用什么…

word文档代码高亮_简单易操作_美化代码

跳转:代码高亮网站 复制-粘贴 简单易用 网站:https://highlightcode.com/高亮优化前: 高亮优化后:

一个很好用的Docker可视化管理工具

目录 前言Portainer安装部署使用 前言 一个好的docker可视化管理工具&#xff0c;可以提升我们不少的工作效率&#xff0c;下面我就推荐一个我使用过的&#xff0c;感觉很不错的一个可视化管理工具给大家 Portainer Portainer是一个开源的Docker管理工具&#xff0c;提供了容…

kindeditor The method toJSONString() is undefined for the type JSONObject

kindeditor 插件上传文件出错的 json_simple-1.1.jar 也不知道是多老的项目&#xff0c;多老的包了&#xff0c;稀有东西

【Date对象】js中的日期类型Date对象的使用详情

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

重温经典struts1之自定义转换器及注册的两种方式(Servlet,PlugIn)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 Struts的ActionServlet接收用户在浏览器发送的请求&#xff0c;并将用户输入的数据&#xff0c;按照FormBean中定义的数据类型&#xff0c;赋值给FormBean中每个变量&a…

“2024世亚软博会”促进软件产业国际化交流与合作的重要窗口

随着科技的飞速发展&#xff0c;软件行业在全球范围内呈现出井喷式的增长。未来&#xff0c;随着软件行业开放的深入&#xff0c;市场机制逐渐完善&#xff0c;人才和政策的持续支持&#xff0c;软件行业将继续保持蓬勃发展态势&#xff0c;为全球用户提供更加优质、智能的软件…

Ansible的脚本----playbook剧本

Playbook组成部分 tasks 任务&#xff1a;包含要在目标主机上执行的操作&#xff0c;使用模块定义这些操作。每个任务都是一个模块的调用。Variables 变量&#xff1a;存储和传递数据。变量可以自定义&#xff0c;可以在playbook当中定义全局变量&#xff0c;可以外部传参。T…

探索未来交通!空客、宝马开启新一轮“量子计算挑战赛”

12月6日&#xff0c;空中客车公司和宝马集团共同发起了一项名为 “量子交通探索”的全球量子计算挑战赛&#xff0c;以应对航空和汽车领域最紧迫的挑战——这些挑战对于传统计算机而言仍然是难以克服的。 这项挑战是首创性的&#xff0c;它将两个全球行业领导者聚集在一起&…

什么是大小端?

今天说一下什么是大小端模式&#xff1f; 大小端模式指的是什么&#xff1f;通常我们在存储器当中存储数据的字节顺序&#xff0c;注意这里强调的是“字节的顺序”。因为在计算机系统中&#xff0c;不管是单片机DSP或者是X86&#xff0c;我们说一个地址对应的存储空间大小呢就是…

动态内存分配

为什么存在内存开辟 我们掌握的内存开辟方式有 int val 20;//在栈空间上开辟四个字节 char arr[10] {0}&#xff1b;//在栈空间上开辟十个连续的内存空间 但是上述开辟空间的方式有两个特点&#xff1a;1.空间开辟大小是固定的。 2.数组在申明的时候&#xff0c;必须指明数…

分析某款go扫描器之四

一、概述 上文提到实现IP的探测存活以及tcp扫描的实现&#xff0c;这部分来分析实现本机网卡信息获取&#xff0c;以及维护一张mac地址表以及ip扫描端口状态表&#xff0c;同时实现syn扫描功能。 项目来源&#xff1a;https://github.com/XinRoom/go-portScan/blob/main/util…

深入了解Python中staticmethod的使用技巧

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;staticmethod是一种用于定义静态方法的装饰器。静态方法是类中的方法&#xff0c;它不依赖于类的实例&#xff0c;也就是说&#xff0c;可以在没有创建类实例的情况下调用它。在本教程中&…

如何实现免费无限流量云同步笔记软件Obsidian?

目录 前言 如何实现免费无限流量云同步笔记软件Obsidian&#xff1f; 一、简介 软件特色演示&#xff1a; 二、使用免费群晖虚拟机搭建群晖Synology Drive服务&#xff0c;实现局域网同步 1 安装并设置Synology Drive套件 2 局域网内同步文件测试 三、内网穿透群晖Synol…