GDB调试程序 [补档-2023-07-19]
gdb调试
它是gcc的调试工具,调试工具都能干什么就不多说了。
7-1生成调试信息
在使用gcc编译c/c++的程序时,需要在编译命令中加入 -g 这一参数,它可以为你显示函数名,变量名 等待。例如:gcc -g test.c -o test
7-2启动gdb调试信息
启动指令:gdb 可执行程序名称
设置运行参数:(在gdb中使用)
set args 可指定运行时参数。
show args 查看设置好的运行参数。
启动程序:(在gdb中使用)
run 让程序开始执行,如果遇到断点,则停止中断点处。
start 让程序一步步向下执行。
7-3在调试中显示源代码
如果在编译的命令上使用了 -g 选项,则可以在调试的过程中使用命令list或者l把源代码显示出来。并且可以中gdb中使用 特殊的指令来查看原代码中的内容。
指令:
list 行数 打印第 x 行的上下文内容
list 函数名 显示对应函数名的原程序
list 显示当前行后面的源程序
list - 显示当前文件开始处的源程序
list file:num 显示file文件的第num行
list file:func 显示file文件中名为func函数的源代码
set listsize 行数 设置一次显示几行源代码(默认显示10行)
show listsize 查看当前listsize的设置
7-4断点设置
设置普通断点:
break 设置断点,可简写为b
b num 在程序的第num行设置断点
b func 在名为func函数的入口处设置断点
多文件直接设置断点:
b filename:num 在名为filename的源文件的第num行处打断点
b filename:func 在名为filename的源文件中的名为func函数的入口处打断点。
查询所有断点:info b 或 info break 或 i break 或 i b,执行后会显示当前的所有断点及其序号。
条件断点:(满足一定条件以后才会触发的断点)
b main.c:num if intValue == 5 在main.c源文件中的第八行设断点,如果行中的intValue的值等于 5时则暂停执行程序。
7-5断点的维护
删除断点:delete可简写为d
delete num 删除断点序号为num的断点
delete 3 4 删除三号和四号断点
delete 1-n 删除从1到n的断点
delete 删除所有断点
指定断点无效:disable可简写为dis
disable num 使得断点序号为num的断点失效。
disable 3 4 使得三号四号断点无效
disable 1-n 使得1到n个断点无效
disable 使得所有断点无效
使无效的断点生效:enable可简写为ena
enable num 使得断点序号为num的断点恢复有效
enable 3 4 使得三号四号断点恢复有效
enable 1-n 使得1到n号断点恢复有效
enable 使得所有无效断点恢复有效
7-6gdb中调试代码的命令
run 运行程序,如果没有断点则会运行到底。可简写为r
next 单步跟踪,向下执行一条指令。可简写为n
step 单步跟踪,进入被调用的函数体内。可简写为s
finish 退出进入的函数,如果退出失败则函数中可能有断点导致退不出来
until 在一个循环体内单步跟踪时,如果不想跟踪了该命令可以直接运行到退出循环体。可简写为u
continue 继续运行程序,直到碰到下一个断点,没有断点则执行到底。可简写为c
7-7调试过程中查看变量的值
打印运行时变量的值:
print XXX 打印值。其中的XXX可以为变量名,字符串,表达式的值,可简写为p
自动显示变量的值:
如果需要长期跟踪某个变量什么的可以采取这种方法,因为它可以在每一次单步跟踪时,打印一遍你 指定要展示的变量。
display 变量名 将某个变量设置为自动显示
info display 查看 display设置的自动显示的信息。
delete display num 删除编号为num的自动显示(编号通过info display查看)。
当然,可以通过加空格的方式或者1-n的方式删除多个自动显示
disable display num 将编号为num的自动显示置为无效
当然,可以通过加空格,1-n的方式来为多个目标设置无效
enable display num 恢复编号为num的自动显示
当然,可以通过加空格,1-n的方式来为多个无效目标设置有效
其他操作:
ptype XX 这个命令用于查看XX变量的数据类型。
p XX 这个命令用于打印XX变量的值
set var xx 可以在调试过程中修改xx的值。如set var x = 10 将程序中x变量的值设置为10.
GDB调试程序 [补档-2023-07-19]的更多相关文章
- [Z] 用GDB调试程序
原文:http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工 ...
- 用 GDB 调试程序
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的 ...
- 用GDB调试程序(一)
http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或 ...
- 用gdb调试程序笔记: 以段错误(Segmental fault)为例
用gdb调试程序笔记: 以段错误(Segmental fault)为例[转] 1.背景介绍2.程序中常见的bug分类3.程序调试器(如gdb)有什么用4.段错误(Segmental fault)介绍5 ...
- 用GDB调试程序
转自:http://blog.csdn.net/haoel/article/details/2879 是一篇从基础讲gdb的博文 用GDB调试程序 GDB概述---- GDB是GNU开源组织发布的一个 ...
- 转载 gdb调试程序
转载自csdn,作者haoel,链接http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一 ...
- STL 补档
STL 补档 1.vector 作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. vector在C++标准模板库中的部分内容,它是 ...
- Linux下使用GDB调试程序
问题描述: Linux下使用GDB调试程序 问题解决: (1)生成调试文件 注: 使用命令 gdb IOStream.c -o IOStre ...
- gdb调试程序函数名为问号,什么原因?step by step解决方案
gdb调试程序函数名为问号,什么原因? http://bbs.chinaunix.net/thread-1823649-1-1.html http://www.bubuko.com/infodetai ...
- AI Summit(2018.07.19)
AI Summit 时间:2018.07.19地点:北京丽都皇冠假日酒店
随机推荐
- 在 HTML 页面中使用 React
该方案使用场景:在html页面中使用react,主js文件index.js和其它非react功能使用js模块化的方式开发,适合轻量级中小型应用 index.html代码: 引入react.react- ...
- SELinux 入门 pt.2
哈喽大家好,我是咸鱼 在<SELinux 入门 pt.1>中,咸鱼向各位小伙伴介绍了 SELinux 所使用的 MAC 模型.以及几个重要的概念(主体.目标.策略.安全上下文) 我们还讲到 ...
- Spring 学习笔记(1)文章导读
<Spring 学习笔记>系列文章是博主在学习过 Spring 后对其进行总结的入门系列博文,适合初入 Spring 的小白,如果你最近正在学习或者打算学习 Spring 的话,不妨随着本 ...
- # 2027 ( 统计元音 ) :hash应用
Problem Description 统计每个元音字母在字符串中出现的次数. Input 输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串. Output 对于每个 ...
- [kuangbin带你飞]专题十二 基础DP1 题解+总结
kuangbin带你飞:点击进入新世界 文章目录 目录 文章目录 1.Max Sum Plus Plus 2.Ignatius and the Princess IV 3.Monkey and Ban ...
- vivo 悟空活动中台 - H5 活动加载优化
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/6gtVR0nVNcZvREjwftZgzA作者:悟空中台研发团队 [悟空活动中台]系列往期精 ...
- <vue 基础知识 8、购物车样例>
代码结构 一. 效果 1. 展示列表v-for 2. 购买数量增加减少,使用@click触发回调函数. 减少的时候如果已经为1了就不让继续减少,使用了v-bind绑定属性 3. 移除也是使用@ ...
- vue2.x封装svg组件并使用
https://blog.csdn.net/ChickenBro_/article/details/134027803
- Linux 中常见目录的作用
by emanjusaka from https://www.emanjusaka.top/2024/01/linux-directory-role 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下 ...
- 有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43。写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数。
4,有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43.写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数. 我的代码: 1.使用双向链表 void Move ...