GDB for C++ in Linux

2023-05-16

这篇文章主要讲讲如何在 Linux 下使用 GDB,当然,就指令而言在 Windows 下也适用。

  • 环境
  • Items
    • 编译
    • 启动
    • 退出
    • 加载文件
    • 查看源代码
    • 断点
      • 插入断点
      • 删除断点
    • 运行程序
    • 查看变量
    • 控制程序执行
      • 继续
      • 下一步
      • 单步进入
      • 结束程序

环境

Ubuntu 16.04 LTS

大同小异。

Items

编译

编译请加上 -g 选项。

启动

在你的工作目录下启动终端,使用 g++ 编译你的代码。为了方便,我们的可执行文件不要扩展名,就叫做 code 吧。

在终端中输入 gdb 即可启动。

退出

在 GDB 中1,键入2:

quit

即可退出 GDB。

如果它阻拦你,多半是因为还有进程在运行。想要继续退出,照它的指令输入 y 即可。

注意,退出的指令不是 exit

加载文件

键入:

file code

file 表示加载文件,code 是你的可执行文件的文件名。

如果加载成功,将会显示:

Reading symbols from code...done.

上面的 code 是文件名。

加载文件只是载入了文件的符号,不会运行文件。

查看源代码

键入:

list

即可查看部分源代码,依次调用打印 10 行。

可简写为:

l

如果连续调用 list,将向下继续打印源代码。当打印完时,将会提示:

Line number [x] out of range; [name] has [x - 1] lines.

说明 list 需要手动指定行号才好:

l [line number]

断点

一般来说,你需要先下断点再运行程序,不然程序一下子就运行完了。

插入断点

键入:

break [line number]

即可在指定行号下断点。

可简写为:

b

成功后将会提示,会告诉你断点的编号([index]):

Breakpoint [index] at [address]: file [source], line [line number].

注意,你最好是给断点加上行号。如果直接调用 break,将会在当前运行行下断点。

另外,同一行可以下多个断点,GDB 将会提示你已经在该行下了的断点的编号。

删除断点

键入:

clear [line number]

即可删除在该行下的所有断点。


键入:

delete [index]

即可删除编号为 [index] 的端点。

可简写为:

d

运行程序

键入:

run

即可开始运行程序。

可简写为:

r

当程序正在运行时,也可调用 run。这时 GDB 会提醒你是否重启程序。

查看变量

键入:

print [expression]

即可查看表达式的值。

可简写为:

p

键入:

display [expression]

将会在每次都打印表达式的值。

如果成功,将会在行首打印每个表达式的编号。键入:

undisplay [index]

将不再打印编号为 [index] 的表达式。

控制程序执行

在程序被断下来后,可以用各种命令控制程序执行。

继续

键入:

continue

即可继续执行程序。何为继续?这里不再阐述,自己体会。

可简写为:

c

下一步

键入:

next

可简写为:

n

单步进入

键入:

step

可简写为:

s

结束程序

键入:

kill

  1. 除特殊说明,下面都指在 GDB 中。 ↩
  2. 输入后按回车。 ↩
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GDB for C++ in Linux 的相关文章

随机推荐

  • Luogu 1117 [NOI 2016] 优秀的拆分

    传送门思路利用后缀数组解决重复子串问题注意事项参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 连暴力都想不到 xff0c 唉 xff0c 我太弱啦 xff01 考虑暴力法 xff0c 可以枚举一个中间点
  • Luogu 1712 [NOI 2016] 区间

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 这么个傻逼题 xff0c 居然把离散化写错了 xff0c 唉 xff0c 我太弱啦 xff01 显然我们可以考虑枚举最短长度和最长长度 xff0
  • CF 977F Consecutive Subsequence

    传送门思路参考代码 传送门 思路 CF 的第一场 div3 xff0c 在我提交了一份有错的代码后突然不能提交了 xff0c 在跑什么 System Testing xff0c 我就跟它杠上了 xff0c 直到它评测完 唉 xff0c 我太
  • CF 7D Palindrome Degree

    传送门思路参考代码 传送门 思路 不是马拉车加随便 DP 乱搞 xff1f 本来想复习一下马拉车的 xff0c 结果拉出了许多事端 xff08 修复了 OI Learner Judge 的严重 bug 一个害我调了两节课的 bug xff0
  • Luogu 3822 [NOI 2017] 整数

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 当年网同这道题还拿了 16 16 分 xff0c 现在一分都不会做了 xff0c 唉 xff0c 我太弱啦 xff01 这道题其实是很不错的 x
  • 【Go】go语言中切片的长度变化后容量的变化

    一 新增信息长度 43 当前长度 lt 61 当前容量 span class token keyword func span span class token function printSlice span span class toke
  • APIO 2018 Practice Session T1 Wedding cake

    没有传送门题目大意思路参考代码熟悉环境 没有传送门 题目大意 给你一个长度为 n n 的正整数序列 a i ai xff0c 要求构造出 n n 个小数 使得它们的和为 1 1 xff0c 且每个数小数点后恰好有
  • APIO 2018 Practice Session T3 / CF 936C Lock Puzzle

    传送门题目大意思路参考代码总结 传送门 题目大意 给你一个字符串 origin xff0c 一个字符串 target xff0c 长度均为 n n 要求在 3 n 3n xff08 5 2 n 5 2
  • APIO 2018 游记

    Day 0Day 1Day 2Day 3Day 4 Day 0 早上 4 4 点就上车去机场赶那 7 7 点的飞机 感觉很困 xff0c 所以在飞机上就这么睡过去了 北京是个好地方 xff0c 但是与我无关 下飞机后 xff0c 我们一行人
  • Luogu 2375 [NOI 2014] 动物园

    文章目录 传送门思路参考代码Review 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 连 KMP 也不会 xff0c WA 飞了 xff0c 唉 xff0c 我太弱啦 xff01 首先 xff0c 原始的 K
  • Luogu 2114 [NOI 2014] 起床困难综合症

    传送门思路参考代码 传送门 思路 按位贪心 但是我太弱了 xff0c 明明可以 O n O n 预处理 xff0c 我却只会 O 32 n O
  • Luogu 2354 [NOI 2014] 随机数生成器

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 这么一个傻逼题 xff0c 我却看成了要你构造一种交换方案使得答案最小 xff0c 结果后面的额外交换是题目给定的 唉 xff0c 我太弱啦 x
  • Luogu 2305 [NOI 2014] 购票

    传送门思路别人家的题解弱化的传送门 xff08 Luogu 3994 高速公路 xff09 参考代码 对于没有距离限制的 50 分 参考代码 对于 100 分的数据参考代码Remarks 传送门 思路 唉 xff0c 我太弱了 xff0c
  • Luogu 1224 [NOI 2013] 向量内积

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 听都没有听说过这类题 xff0c 唉 xff0c 我太弱啦 xff01 显然这道题可以在 O n 2 d O n 2
  • Luogu 1397 [NOI 2013] 矩阵游戏

    传送门思路正解参考代码Remarks 传送门 思路 唉 xff0c 我太弱了 xff0c T1 都做不来 xff0c 唉 xff0c 我太弱啦 xff01 显然这个题可以用矩阵快速幂在 O log n O log n
  • Luogu 2414 [NOI 2011] 阿狸的打字机

    文章目录 传送门思路参考代码总结 传送门 思路 首先我们甚至不能单独保存每个字符串 xff0c 因为总长度可以达到 O n 2
  • kali新手入门教学(10)--ping的讲解

    Ping 是 Windows 和 Linux 都自带的一个扫描工具 xff0c 用于校验与远程计算机或本机的连接 只有在安装 TCP IP 协议之后才能使用该命令 Ping 命令通过向计算机发送 ICMP 回应 报文并且监听回应报文的返回
  • Luogu 3628 [APIO 2010] 特别行动队

    传送门思路参考代码 传送门 BZOJ 思路 设 f i f i 表示将 1 i 1 i 的士兵编
  • Luogu 1399 [NOI 2013] 快餐店

    传送门思路参考代码Remarks总结 传送门 思路 发现这是一棵环套树 那首先我们会想到树上的情况 如果这是一棵树 xff0c 我们自然会联想到树的直径 xff0c 自然会想到对于树而言 xff0c 答案为直径长度的一半 证明 用反证法 假
  • GDB for C++ in Linux

    这篇文章主要讲讲如何在 Linux 下使用 GDB xff0c 当然 xff0c 就指令而言在 Windows 下也适用 环境Items 编译启动退出加载文件查看源代码断点 插入断点删除断点 运行程序查看变量控制程序执行 继续下一步单步进入