当前位置: 首页 > news >正文

湘潭网站建设 皆来磐石网络免费中文网站模板

湘潭网站建设 皆来磐石网络,免费中文网站模板,广东建设厅证件查询网站,移动网络服务电话冷若冰霜驱动盘 list run break step next (n) # 单步执行(不进入函数) quit delete print continue (c) # 继续运行到下一个断点 watch x # 当变量x被修改时暂停 GDB(GNU Debugger)是Linux下最强大的代码调试工具&a…

冷若冰霜驱动盘

list

run

break

step    next (n) # 单步执行(不进入函数)

quit

delete

print

continue (c) # 继续运行到下一个断点

watch x # 当变量x被修改时暂停

GDB(GNU Debugger)是Linux下最强大的代码调试工具,掌握其常用命令能快速定位程序崩溃、死锁、逻辑错误等问题。以下是按使用场景分类的GDB核心命令详解(附实例):


一、基础调试流程

1. 启动调试

bash

gdb ./your_program       # 加载可执行文件
gdb -p <pid>             # 附加到正在运行的进程
2. 设置断点

bash

b main                   # 在main函数入口设断点
b file.c:20              # 在file.c第20行设断点
b *0x4005a7              # 在内存地址0x4005a7设断点
b ClassA::func           # 在类成员函数func设断点
3. 运行程序

bash

run                      # 从头运行程序
run arg1 arg2            # 带参数运行
continue (c)             # 继续运行到下一个断点
4. 单步执行

bash

next (n)                 # 单步执行(不进入函数)
step (s)                 # 单步执行(进入函数内部)
finish                   # 执行完当前函数并暂停

二、查看程序状态

1. 查看变量/内存

bash

print x                  # 打印变量x的值
print *ptr@10            # 打印ptr指向的10个元素
print $rax               # 打印寄存器rax的值
x/8wx 0x7fffffffe010     # 以16进制显示内存地址处的8个字(4字节)
2. 查看堆栈

bash

backtrace (bt)           # 显示当前调用栈
frame 2                  # 切换到调用栈第2层
info locals              # 显示当前栈帧的局部变量
3. 监控点(Watchpoints)

bash

watch x                  # 当变量x被修改时暂停
watch *(int*)0x12345678  # 监控内存地址的值变化

三、高级调试技巧

1. 多线程调试

bash

info threads             # 列出所有线程
thread 3                 # 切换到线程3
b thread_test.c:37 thread 2  # 仅在线程2的指定位置断点
2. 条件断点

bash

b file.c:15 if x>100     # 当x>100时触发断点
ignore 1 5               # 忽略断点1的前5次触发
3. 修改程序状态

bash

set var x=42             # 修改变量x的值
call foo()               # 强制调用函数foo()

四、崩溃分析(Core Dump)

bash

gdb ./your_program core  # 加载崩溃转储文件
bt full                  # 显示完整调用栈(含局部变量)
info registers           # 查看崩溃时的寄存器值

五、实用命令速查

命令作用示例
list (l)查看源代码l 10,20(显示10-20行)
info breakpoints查看所有断点
disable/enable禁用/启用断点disable 1-3
disassemble反汇编当前函数disassemble /m main
handle设置信号处理handle SIGSEGV stop print
define自定义命令序列见下方示例

六、实战调试示例

场景:调试段错误(Segmentation Fault)

bash

(gdb) run                # 运行程序直到崩溃
Program received signal SIGSEGV, Segmentation fault.
(gdb) bt                 # 查看崩溃位置
#0  0x000055555555516a in func (ptr=0x0) at test.c:8
#1  0x0000555555555196 in main () at test.c:15
(gdb) frame 0            # 切换到崩溃栈帧
(gdb) print ptr          # 查看空指针
$1 = (int *) 0x0
自定义命令:打印链表

bash

define plistset $p = headwhile $p != 0print *$pset $p = $p->nextend
end
# 使用:plist

七、GDB可视化增强

  • TUI模式gdb -tui 或 Ctrl+X A 切换文本界面(显示源码+汇编)

  • 插件推荐

    • GEF:内存布局可视化、漏洞利用辅助

    • pwndbg:CTF/PWN专用增强


八、调试技巧总结

  1. 崩溃分析:优先用 bt + info registers 定位异常位置

  2. 数据断点:用 watch 捕捉变量意外修改

  3. 多线程调试:用 thread apply all bt 打印所有线程堆栈

  4. 自动化:用 .gdbinit 文件预加载命令(如自定义函数)

⚠️ 注意:编译时务必加 -g 选项保留调试符号(gcc -g -o test test.c

http://www.dtcms.com/a/416459.html

相关文章:

  • 花都网站 建设信科网络templatemonster wordpress
  • 网站积分方案虹桥门户网
  • ESP32-S3入门第七天:UART串口通信与设备交互
  • 营销软件网站建设网站优化效果怎么样
  • 解码编程语言:穿越技术迷宫的指南【2】
  • 网站编程语言网站开发语言有哪几种
  • 狮山网站制作做设计比较好的网站
  • 简单美食网站模板免费下载开源手机网站建站系统
  • 网站公司 模板网站设计与网页制作公司
  • 一个网站备案多个域名吗建设通好用吗
  • wordpress手机站如何做网页的制作
  • 怎样做收费网站微信公众号和微网站
  • 个人怎么做ckmov解析网站小视频网站建设
  • 国外网站模版免费下载阿里巴巴如何建设网站首页
  • 建设网站排名海外营销网络
  • 网站设计文字超链接网络个性化定制
  • 网站建设结论推广优化厂商联系方式
  • 抚州 提供网站建站 公司制作网站教程视频
  • js 网站校验网络维护工程师工资多少
  • 字体排版设计网站莆田联客易外贸网站建设推广
  • Web浏览器存储技术指南:从LocalStorageQ到OPFS搞定网页数据存储难题
  • 网站建设设计问卷中国纪检监察报官网
  • 做外国网站百度搜到下载网站怎么下载
  • 高端网站建设哪家公司好游戏下载网站 wordpress
  • 智慧社区解决方案-1PPT(46页)
  • 阿里云购买域名后怎么建网站网站建设公司ejiew
  • 做pc端网站效果优秀学校网站模板
  • 素材图库网站源码专业做传奇网站解析
  • 阳江做网站公司绵阳网站建设工作室
  • 做内容网站好累领卷网站怎么做