首页 > 其他分享 >GDB使用技巧

GDB使用技巧

时间:2024-03-22 09:11:59浏览次数:28  
标签:技巧 查看 args 调用函数 GDB 线程 使用 断点

GDB使用技巧

1.GDB启动

  1. 直接调试目标程序:gdb ./hello_server
  2. 附加进程id:gdb attach pid
  3. 调试core文件:gdb filename corename

2. 退出GDB

  • 可以用命令:q(quit的缩写)或者 Ctr + d 退出GDB。
  • 如果GDB attach某个进程,退出GDB之前要用命令 detach 解除附加进程。

3. 常用命令

命令名称 命令缩写 命令说明
run r 运行一个待调试的程序
continue c 让暂停的程序继续运行
next n 运行到下一行
step s 单步执行,遇到函数会进入
until u 运行到指定行停下来
finish fi 结束当前调用函数,回到上一层调用函数处
return return 结束当前调用函数并返回指定值,到上一层函数调用处
jump j 将当前程序执行流跳转到指定行或地址
print p 打印变量或寄存器值
backtrace bt 查看当前线程的调用堆栈
frame f 切换到当前调用线程的指定堆栈
thread thread 切换到指定线程
break b 添加断点
tbreak tb 添加临时断点
delete d 删除断点
enable enable 启用某个断点
disable disable 禁用某个断点
watch watch 监视某一个变量或内存地址的值是否发生变化
list l 显示源码
info i 查看断点 / 线程等信息
ptype ptype 查看变量类型
disassemble dis 查看汇编代码
set args set args 设置程序启动命令行参数
show args show args 查看设置的命令行参数

4. 参考文章

  1. pwndbg 基本操作指令 - MuRKuo - 博客园 (cnblogs.com)

标签:技巧,查看,args,调用函数,GDB,线程,使用,断点
From: https://www.cnblogs.com/ONEZJ/p/18088662/gdb-use-tips-z2afhnb

相关文章

  • soda-data dremio 集成使用
    以前简单介绍过soda数据质量工具,以下是关于dremio集成的一个说明环境准备dremiodremio基于docker部署,具体可以参考https://github.com/rongfengliang/dremio_cluster_docker-composesodasoda包含了library以及core,我使用了core,不依赖cloud,基于venvpython......
  • 关于使用向日葵等远程软件,关闭主机显示器后远程画面缩小的解决办法
    【方法一】修改分辨率直接在桌面上,右键【显示设置】>>>【显示器分辨率】>>>改成更大的分辨率即可。(当然这个方法的前提是:修改分辨率的选项是可选的而不是灰色的,并且你的鼠标可以下拉并点击到修改分辨率的选择框)【方法二】修改注册表1.打开主机和显示器,在桌面上右键>>>显示设置>>......
  • 使用概率分析与指示器随机变量解决生日悖论问题及C代码示例
    概率分析与指示器随机变量解决生日悖论问题一、引言二、生日悖论的概率分析三、指示器随机变量解决生日悖论问题四、C代码实现五、结论与启示一、引言在日常生活中,我们经常会遇到一些与概率相关的问题,其中生日悖论就是一个非常有趣且典型的例子。生日悖论指的是在一......
  • NOI2024前听课笔记2.0-《思维技巧选讲》by chenxia25
    NOI2024前听课笔记2.0-《思维技巧选讲》bychenxia25性质探索堆砌充分条件和必要条件luoguP10144[WC2024]水镜用形式化语言转化条件等价模型的刻画CF1458DFlipandReverseCF1510HHardOptimizationluoguP8293[省选联考2022]序列变换luoguP8416[THUPC2022决......
  • MySQL 索引:索引为什么使用 B+树?
    Hash索引不支持顺序和范围查询;二叉查找树(BST):解决了排序的问题,极端情况下可能会退化成线性链表,查询效率急剧下降;平衡二叉树(AVL):通过旋转解决了平衡的问题,但是旋转操作效率太低; AVL树是严格的平衡二叉树,所有节点的左右子树高度差不能超过1红黑树:通过舍弃严格的平......
  • 【ai技术】(3):树莓派4,成功安装ollama软件,内存4G,推荐使用命令行界面安装,使用raspi-config
    1,关于raspberrypi4项目https://www.bilibili.com/video/BV1K2421P71h/【ai技术】(3):树莓派4,成功安装ollama软件,内存4G,安装命令行版本,使用raspi-config配置wifi,速度9t/s2,下载raspberrypi镜像项目地址:https://www.raspberrypi.com/software/operating-systems/#r......
  • 程序“猿”的面试技巧与心法
    在数字化浪潮中,程序员这一职业已成为众人瞩目的焦点。面试作为进入心仪公司的关键环节,其实是一场精心策划的游戏。只要掌握关键策略与技巧,你定能在这场双向选择中脱颖而出。面试,本质上是一场自我推销的盛宴。不要将其视为考验临场反应的战场,而应视为展示个人魅力的舞台。你需......
  • Ubuntu使用gvm安装go
    建议使用非sudo用户装,方便vscode连接时go插件使用。1.若系统之前存在旧版本的go,无则跳过此步骤sudorm-rf/usr/local/gosudoapt-getremovegolangsudoapt-getremovegolang-gosudoapt-getautoremove2.到gvm的官方github页面找到安装的命令https://github.com/moo......
  • DA-CLIP关于使用BLIP生成数据集的代码注释
    背景:BLIP:DA-CLIP需要的目标: 为了在混合的退化数据集上训练DA-CLIP,作者使用引导式视觉语言框架BLIP为所有HQ图像生成描述。从HQ图像生成的描述是准确的,不传递退化信息。 然后,我们可以直接将这些干净的标题、LQ图像和相应的退化类型结合起来,构建图像-文本-退化类型......
  • 嵌入式汇编代码的正确使用
    正确使用嵌入式汇编代码涉及到对高级语言、汇编语言以及目标硬件架构的深入理解。以下是一些关键步骤和注意事项,以确保嵌入式汇编代码的正确使用: 理解目标架构:在开始编写嵌入式汇编代码之前,你需要对目标硬件架构有深入的了解。这包括了解该架构的指令集、寄存器、内存模型......