【linuxgdb】动态链接和静态链接的区别,gdb的基础使用

news2024/11/18 11:35:27

目录

1.gcc/c++动态链接和静态链接的区别

 2.gdb的基础使用

2.2使用gdb调试


1.gcc/c++动态链接和静态链接的区别

1.1查看可执行文件是动态还是静态的

格式:file+文件名

1.2动态链接和静态链接 

  1. 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”,gcc指令最后加-static为静态链接
  2. 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。
  3. 静态链接的所占空间远大于动态链接
  4. 静态链接的可执行文件移植性很强,因为库文件的实现被写到可执行文件当中了

 2.gdb的基础使用

2.1什么样的可执行文件才可以使用gdb

1.程序的发布方式有两种,debug模式release模式

  • Linux默认是release模式,调试需要debug模式,在gcc最后加上-g

2.2使用gdb调试

2.2.1进入调试和显示代码

进入调试

[root@VM-24-5-centos gccgdb讲解]# gdb totaldebug//进入调试语句
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 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-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/gccgdb讲解/totaldebug...done.
(gdb) //进入调试是命令行变成这个样子

退出调试:quit(q)和Ctrl+这三个都可以

显示代码:list(l):每次显示10行,下一次会接着上一次的下一行继续;list(l) 函数名:查看对应函数的源代码

 2.2.2断点

添加断点:break(b)+行数/函数名

查看断点信息:info b(break)

禁用断点:disable breakpoints 断点号数

启用断点:enable breakpoints 断点号数

 删除断点:delete breakpoints--删除所有断点,delete breakpoints 断点号数--删除对应号数断点

 2.2.3执行代码和逐语句逐过程

执行代码:run(r):从开始连续而非单步执行程序;continue(或c):从当前位置开始连续而非单步执行程序(从一个断点执行到下一个断点)

逐语句:一句一句代码执行--step(s)

逐过程:不会进入函数--(next)n

2.2.4跟踪查看一个变量

display:跟踪查看一个变量,每次停下来都显示它的值

undisplay 跟踪查看变量号数:删除跟踪变量;undisplay:删除所有跟踪查看变量

其他:

  1. inish:执行到当前函数返回,然后挺下来等待命令
  2. until X行号:跳至X行
  3. breaktrace(或bt):查看各级函数调用及参数
  4. info(i) locals:查看当前栈帧局部变量的值

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

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

相关文章

ARM S5PV210 串行通信接口详解

一、串行通信接口详解 1 0. 串口的名称 S5PV210 的数据手册中串口控制器在 section8.1串口的官方名称叫&#xff1a;universal asynchronous reciver and transmitter&#xff0c;通用异步收发器 英文缩写是uart&#xff0c;中文简称串口。 1. S5PV210 的串口控制器工作原理…

CSS -- 2D转换各属性讲解(translate,rotate,scale)

文章目录2D转换1 二维坐标系2 2D转换之移动 translate3 2D转换之旋转 rotate4 2D转换中心点 transform-origin5 2D转换之缩放scale6 2D转换综合写法7 2D转换总结2D转换 转换(transform)是CSS3中具有颠覆性的特征之一&#xff0c;可以实现元素的位移、旋转、缩放等效果 转换(t…

[ 常用工具篇 ] 使用 kali 实现网络钓鱼 -- setoolkit 详解实战(一)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

密码学讲座PPT

来自山大密码学讲座的PPT。 一些密码学领域常用名词术语 Diffie-Hellman 密钥交换&#xff1b;Elgamal 加密和签名&#xff1b;DSA 签名&#xff1b;因相应的离散对数问题难解&#xff0c;大素数的原根可用于密钥交换;RSA加密和签名: 因大整数因子分解难算&#xff0c;合数可成…

JetPack 组件总结

文章目录JetPackLifecycle使用Lifecycle解耦页面和组件使用Lifecycle解耦Service与组件使用ProcessLifecycleOwner监听应用程序生命周期ViewModel 与 LiveDataViewModelLiveDataViewModel LiveData 实现Fragment间通信DataBinding 的意义与应用意义使用前的配置import标签事件…

SWPUCTF 2021 新生赛

&#x1f60b;大家好&#xff0c;我是YAy_17&#xff0c;是一枚爱好网安的小白&#xff0c;自学ing。 本人水平有限&#xff0c;欢迎各位大佬指点&#xff0c;一起学习&#x1f497;&#xff0c;一起进步⭐️。 ⭐️此后如竟没有炬火&#xff0c;我便是唯一的光。⭐️ 目录 g…

Kotlin + Jpa + Querydsl

Kotlin Jpa Querydsl 本篇主要介绍一下 kotlin jpa querydsl . jpa querydsl 是我很喜欢的一种搭配,它能够让你写sql语句一样的去写代码 , 以前我也写过关于 java版本的, 本篇就来看看kotlin中如何去使用 1.引入插件 主要引入jpa插件 和 kapt Kotlin annotation processi…

【剧前爆米花--爪哇岛寻宝】Cloneable接口和深浅拷贝

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于接口的文章&#xff0c;在本篇文章中我会分享Cloneable接口的用法和机制&#xff0c;同时从底层分析深拷贝和浅拷贝的区别。 Cloneable接口 Cloneable这类接口可以说是…

ZigBee硬件平台小记(CC2530)

文章目录1.CC2530射频模块特征2.CC2530射频模块主要技术指标3.调试器输出接口特点输出引脚排列1.CC2530射频模块特征 基于CC2530F256单芯片ZigBee SOC&#xff08;System On Chip&#xff09;&#xff0c;集成8051内核模块尺寸&#xff1a;36mm x 26mmSMA底座&#xff0c;外接…

代码随想录训练营第56天|LeetCode 647. 回文子串、516.最长回文子序列

参考 代码随想录 题目一&#xff1a;LeetCode 647. 回文子串 如果用暴力求解&#xff0c;两层for循环加一层判断&#xff0c;两个遍历指针i和j构成一个区间&#xff0c;每次判断这个区间内的字符串是否为回文串&#xff0c;这样的求法时间复杂度为O(n^3)。这里使用动态规划可…

Jetpack Compose中的手势操作

点击事件 监听点击事件非常简单&#xff0c;使用 clickable 和 combinedClickable 修饰符即可满足需求&#xff1a; OptIn(ExperimentalFoundationApi::class) Composable fun ClickableExample() {Column{Box(Modifier.clickable { println("clickable") }.size(3…

异常检测原理及其在计算机视觉中的应用

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达这篇文章涵盖了三件事&#xff0c;首先什么是视觉角度的异常检测&#xff1f;用于异常检测的技术有哪些&#xff1f;它在哪里使用&#xff1f;异常检测是什么&#xff1f;…

微服务架构下的配置治理模式

微服务被滥用是不争的事实。被滥用的同时&#xff0c;很少人留意到它所带来的配置治理的问题。本文我们介绍两种常见的治理模式。基于common的配置治理模式当微服务数量多时&#xff0c;开发人员倾向于创建这样的配置文件&#xff1a;common-redis.jsoncommon-mysql.jsoncommon…

〖产品思维训练白宝书 - 产品思维认知篇③〗- 产品思维 VS 技术思维

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

【Numpy基础知识】Broadcasting广播

Numpy广播 来源&#xff1a;Numpy官网&#xff1a;https://numpy.org/doc/stable/user/basics.html 广播描述了 NumPy 在算术运算期间如何处理具有不同形状的数组。根据某些约束&#xff0c;较小的数组将“广播”到较大的阵列&#xff0c;以便它们具有兼容的形状。 导包 impo…

【Python机器学习】条件随机场模型CRF及在中文分词中实战(附源码和数据集)

需要源码请点赞关注收藏后评论区留言私信~~~ 基本思想 假如有另一个标注序列&#xff08;代词 动词 名词 动词 动词&#xff09;&#xff0c;如何来评价哪个序列更合理呢&#xff1f; 条件随机场的做法是给两个序列“打分”&#xff0c;得分高的序列被认为是更合理的。既然要…

移动设备软件开发-Shape详解

Spape详解 1.自定义背景shape 1.1gradient 1.简介 定义渐变色&#xff0c;可以定义两色渐变和三色渐变&#xff0c;及渐变样式&#xff0c;它的属性有下面几个2.属性 angle&#xff0c;只对线性渐变是有效的放射性渐变必须指定放射性的半径&#xff0c;gradientRadiouscentetX和…

STM32的ST-link调试下载,各种调试接口硬件介绍

调试原理 STM32F-10X使用M3内核&#xff0c;该内核支持复杂的同i傲视操作&#xff0c;硬件调试模块允许在取指令&#xff08;指令单步运行&#xff09;或访问数据&#xff08;数据断电时&#xff09;使得内核停止。在内核停止时&#xff0c;内核状态都可被查询&#xff0c;完成…

JS基于编码方式实现加密解密文本

JS基于编码方式实现加密解密文本 严格来讲这是一种简单的编码方式&#xff1a;加密&#xff0c;将明文【注】转成编码。解密则是编码转码为明文本。 【注&#xff1a;明文是指没有加密的文字(或者字符串)&#xff0c;一般人都能看懂。】 下面源码用到 这个fromCharCode() 方…

年底了,感谢大家2022年的支持,虚竹哥送10本JAVA好书

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3…