手把手GDB调试

news2024/12/29 5:32:39

确保你的程序有可调式的信息

使用gcc编译一个程序 ,带上一些额外的参数

-o0 -g

-o0 :避免编译器优化,使用最低的优化等级,默认的编译选项
-g :生产调试信息

如果你已经有一个工程demo,使用cmake时注意使用Debug模式,如:
SET(CMAKE_BUILD_TYPE "Debug")

调试一个简单的程序

示例代码
在这里插入图片描述
在130行出打断点,并读取变量值
gdb的调试记录如下:

root@1124ceb4e92e:/data/smc/Cool/build# gdb cool
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from cool...done.
(gdb) b 130
Breakpoint 1 at 0x40e8a0: file /data/smc/Cool/src/main.cpp, line 130.
(gdb) r
Starting program: /data/smc/Cool/build/cool
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff1bbc700 (LWP 3502)]
[New Thread 0x7fffef3bb700 (LWP 3503)]
[New Thread 0x7fffeebba700 (LWP 3504)]
[New Thread 0x7fffea3b9700 (LWP 3505)]
[New Thread 0x7fffe7bb8700 (LWP 3506)]
[New Thread 0x7fffe73b7700 (LWP 3507)]
[New Thread 0x7fffe4bb6700 (LWP 3508)]

Thread 1 "cool" hit Breakpoint 1, main (argc=1, argv=0x7ffffffa9518) at /data/smc/Cool/src/main.cpp:130
130             ++value_a;
(gdb) print value_a
$1 = 0
(gdb) c
Continuing.

Thread 1 "cool" hit Breakpoint 1, main (argc=1, argv=0x7ffffffa9518) at /data/smc/Cool/src/main.cpp:130
130             ++value_a;
(gdb) print value_a
$2 = 1
(gdb)

调试一个正在运行的程序

gdb attatch `pidof cool`

启动调试并设置断点
在这里插入图片描述
设置断点是出现了No line 130 in the current file,调试信息缺失了;
利用symbol-file加载运行程序的debug信息
在这里插入图片描述

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

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

相关文章

Java使用poi-tl生成word文档添加超链接及添加多个超链接情况

首先是生成单个超链接情况&#xff0c;很简单 就是通过字符替换就行&#xff0c;但是替换的value格式是 TextRenderData data.put("attachment",Texts.of("文件名").link("http://wenjianlj文件路径.com").create()); 就是在替换的data&#…

spring复习:(39)注解方式的ProxyFactoryBean

一、定义接口 package cn.edu.tju.study.service;public interface MyService {void myMethod(); }二、定义实现类&#xff1a; package cn.edu.tju.study.service;public class MyServiceImpl implements MyService{Overridepublic void myMethod() {System.out.println(&qu…

认识一个失意的李白:如何制作一个人物生平二维码?

电影《长安三万里》的火爆&#xff0c;又一次唤醒了我们对大唐盛世的憧憬和向往。 飞流直下的瀑布、洒落床前的月光、花间独酌的美酒、胡天八月的大雪、越过青天的白鹭、长河孤烟的大漠、钟鼓馔玉的宴会……每每读起&#xff0c;那景象如在眼前。 对于一代又一代读着唐诗、听…

小程序一码跳多端的实现架构。。。

以常用的小程序&#xff0c;微信&#xff0c;支付宝为例&#xff0c; 现在要实现一个二维码&#xff0c;通过微信扫跳转微信小程序&#xff0c;通过支付包扫&#xff0c;跳转支付宝小程序&#xff0c;&#xff08;其他小程序也如此&#xff09; 实现思路&#xff0c;H5页面周转…

社区生鲜超市数字化经营怎么做?社区生鲜超市系统一览

社区生鲜超市是一种以货架自助的形式、结合现代超市经营理念&#xff0c;来售卖果蔬、肉类、水产、粮油、熟食等生鲜产品的一种零售形式&#xff0c;通常为小规模的连锁生鲜超市、专营店&#xff0c;主要服务于一个社区、街区等。目前&#xff0c;社区生鲜超市通常拥有较好的区…

【数据结构】二叉树详解(1)

⭐️ 前言 ✨ 二叉树的概念性质 ⭐️ 二叉树链式结构的实现 结构定义&#xff1a; #include <stdio.h> #include <stdlib.h> #include <assert.h>typedef int BinaryTreeDataType;typedef struct BinaryTreeNode {BinaryTreeDataType value;struct Binary…

如何克服Leetcode做题的困境

文章目录 如何克服Leetcode做题的困境问题背景克服困境的建议实践与理论结合切忌死记硬背分析解题思路不要过早看答案迭代式学习寻求帮助坚持与耐心查漏补缺 结论 如何克服Leetcode做题的困境 问题背景 明明自觉学会了不少知识&#xff0c;可真正开始做Leetcode题目时&#x…

用WooCommerce创建一个多用户商城系统和多供应商市场

线上市场是下一波数字化商务。2020 年&#xff0c;超过60% 的线上支出是通过数字市场发生的。人们喜欢从市场上购物&#xff0c;因为它们使购物变得容易。出于同样的原因&#xff0c;企业喜欢通过它们进行销售。通过多用户商城系统和多供应商WooCommerce商城设置&#xff0c;每…

Vue3结果(Result)

可自定义设置以下属性&#xff1a; 结果的状态&#xff0c;决定图标和颜色&#xff08;status&#xff09;&#xff0c;类型&#xff1a;‘success’|‘error’|‘info’|‘warn’|‘404’|‘403’|‘500’&#xff0c;默认&#xff1a;‘info’标题文字&#xff08;title&…

【机密计算-大厂有话说】IBM

什么是机密计算? 机密计算是云计算技术中的一种,通过 CPU 飞地(enclave,飞地可以理解成与世隔绝的世外桃源)隔离处理中的数据。飞地中的内容(处理中的数据)和处理这些数据用到的技术只能被授权的程序代码访问,对于云提供商以及任何人任何事都不可见也不知道。 随着公…

C# 深入理解事件(event)机制

目录 一&#xff0c;引言 二&#xff0c;事件的定义和用法 2.1 同步事件执行 2.2 异步事件执行 2.3 等待异步事件完成 2.4 捕获异常处理中的异常 一&#xff0c;引言 都知道事件的本质是一个多播委托&#xff08;MulticastDelegate)&#xff0c;但对于事件的机制和用法…

【代码随想录 | Leetcode | 第六天】链表 | 反转链表 | 两两交换链表中的节点 | 删除链表的倒数第 N 个结点

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏&#xff0c;今天将为大家带来反转链表、两两交换链表中的节点和删除链表的倒数第N个节点的分享✨ 目录 前言206. 反转链表24. 两两交换链表中的节点19. 删除链表的倒数第 N 个结点总结 206. 反转链表 ✨题目链接点这里 给你…

HDFS与MapResource笔记

客户端向NN请求上传文件 NN回应可以上传 请求上传块,返回DN 所以后面就比较慢 找最近的服务器进行 64K发到1节点,1节点立刻发给2节点,同时1节点自动开始落盘,这里,3个节点是同时落盘的. 因为缓存是在内存中,而持久化是将数据存到磁盘上. 副本节点选择: 1.安全:放不同机架 2.速…

QT中QTimer的循环时间与槽函数执行时间分析,以及在事件循环中触发

目录 当循环时间小于槽函数时间时&#xff1a; 当循环间隔时间大于槽函数时间时&#xff1a; 当存在两个定时器器&#xff0c;其中一个还是间隔100ms&#xff0c;另一个间隔1000ms&#xff1a; 当两个定时器的循环周期大于槽函数执行时间时 当在主程序中添加一个for循环…

13年测试老鸟总结,性能测试-并发用户数估算(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 并发用户数&#…

nuxt3初始化项目后配置eslint+prettier

1、安装 eslint 、eslint-config-prettier、eslint-plugin-prettier、prettier arn add eslint eslint-config-prettier eslint-plugin-prettier prettier -D eslint-config-prettier&#xff1a;关闭eslint中与prettier相互冲突的规则。eslint-plugin-prettier&#xff1a;赋…

26.Java 异常

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的 要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常: 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个…

【Whisper】《OpenAI Whisper 精读【论文精读】》学习笔记

方法 Whisper在论文中表示使用单模型&#xff08;single model&#xff09;来完成多个语音任务&#xff08;multitask&#xff09;&#xff0c;李沐教授认为优点是设计上比较干净&#xff1b; I. 关于单模型效果的疑问 但是他同时也提出了两个疑问&#xff1a; 使用单模型会…

Simulink仿真模块 - Data Store Read

Data Store Write:向数据存储中写入数据 库:Simulink / Signal Routing 模型为: 说明 Data Store Write 模块将其输入端口的值复制到指定的数据存储中。Data Store Write 模块执行的每个写入操作将覆盖数据存储,取代以前的内容。 此模块写入的数据存储由定义数据存储的 Dat…

刷题日记08《BFS》

概念 宽度优先搜索算法&#xff08;又称广度优先搜索&#xff09;是最简便的图的搜索算法之一&#xff0c;这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS&#xff0c;属于一种盲目搜寻…