当前位置: 首页 > news >正文

gbd的概念与常用指令

1.在linux系统下的警告和错误,当程序出下bug时候,linux终端会给大家两种不同的信息

警告(warning):有时候警告是不影响可执行程序的产生

错误(error):错误如果不改正,是不能生产可执行程序的

包含行 列  错误所在代码 错误原因  错误代码行

2.什么是GDB?

GDB,GNU工程调试器,让你看到发生了什么 在另一个程序执行时“内部”它 - 或者另一个程序 在它坠毁的那一刻正在做。

GDB 可以做四种主要的事情(加上其他支持的事情 其中)帮助您捕获 ACT 中的错误:

  • 启动程序,指定可能影响其行为的任何内容。
  • 使程序在指定条件下停止。
  • 检查程序停止时发生了什么。
  • 更改程序中的内容,以便进行试验 纠正一个 bug 的影响,然后继续了解另一个 bug。

3.使用GDB

1.准备一个c语言程序

2.编译程序,编译选项中需要加上-g

g++ -g **.cpp -o  ***

3.启动gdb调试

gdb ./***

4.gdb常用指令

quit(q):表示退出gdb 

run(r):表示可执行程序,如果没有设置断点,则从头执行文件

list (l):默认展示可执行文件的10行

list m,n 从m到n行信息

list main 展示main中间10行

break(b):表示设置断点,当调试器将程序运行到断点所在位置后,会暂停于此

break 行号:表示在某行设置断点

break func:表示在func指定位置设置断点

info break:查看所有断点的信息

delete breakpoint 断定编号:表示删除指定的断点

next(n):表示执行下一条语句

continue(c):表示从断点处继续向后执行,直到遇到下一个断点或者程序结束

step(s):能够跳入指定函数中,查看相关函数内部代码

print(p)变量名/地址:表示打印指定变量或地址信息

set variable 变量名=值:表示给某个变量设置相关的值

5.gdb使用小技巧

shell:后面可以跟终端指令,表示执行终端相关操作

set logging on:设置设置开启日志功能,会在当前目录中生成一个gdb.txt文件记录接下来的调试

watchpoint:观察点,如果设置的观察点的值发生改变,则会将该值的旧值和新值全部展示出来

watch *+变量地址

6.gdb调试出错的文件

当一个可执行程序出现错误时,会产生一个core文件,用于查看相关错误信息

linux系统默认是不产生core文件,需要进行相关设置后才能产生

通过ulimit-a查看

open files 1024大小  pipe size 8   0没有核文件

通关 ulimit -c unlimited来设置core文件的个数

执行可执行程序,如果程序有问题,会生成core文件

7.gdb调试其他正在执行文件

./可执行程序 &:表示将可执行程序后台运行,不占用当前终端

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Linux基础】Linux基本指令(一)
  • 小米教你:2GB内存搞定20亿数据的高效算法
  • 【C++】vector 的模拟实现
  • 从0开始的算法(数据结构和算法)基础(七)
  • Unity Addressables bundle依赖查看和资源重复查看工具
  • linux 多进程搭建webserver
  • MinGW-w64编译安装Acise
  • 维吉尼亚密码加解密实现(python)
  • Android 12系统源码_多屏幕(一)多屏幕设备显示Activity
  • 超声波眼镜清洗机哪个性价比高?2024推荐四款清洁力高的超声波清洗机
  • 第十一章:图论part06 108.冗余连接 109.冗余连接II (补)
  • 3、pnpm yarn npm
  • MySQL笔记(十):视图
  • 【力扣】70.爬楼梯
  • 嵌入式初学-C语言-十七
  • [译]CSS 居中(Center)方法大合集
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Cumulo 的 ClojureScript 模块已经成型
  • gitlab-ci配置详解(一)
  • golang中接口赋值与方法集
  • LeetCode18.四数之和 JavaScript
  • Python语法速览与机器学习开发环境搭建
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud Feign的两种使用姿势
  • vue 个人积累(使用工具,组件)
  • 基于 Babel 的 npm 包最小化设置
  • 警报:线上事故之CountDownLatch的威力
  • 排序(1):冒泡排序
  • 浅谈web中前端模板引擎的使用
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 学习JavaScript数据结构与算法 — 树
  • 用Python写一份独特的元宵节祝福
  • 1.Ext JS 建立web开发工程
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​补​充​经​纬​恒​润​一​面​
  • !!java web学习笔记(一到五)
  • !$boo在php中什么意思,php前戏
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (2)空速传感器
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (十六)视图变换 正交投影 透视投影
  • (算法设计与分析)第一章算法概述-习题
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .NET CF命令行调试器MDbg入门(一)
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .net6+aspose.words导出word并转pdf
  • .NET建议使用的大小写命名原则
  • .NET开源快速、强大、免费的电子表格组件
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @ResponseBody
  • [10] CUDA程序性能的提升 与 流
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [APIO2015]巴厘岛的雕塑