gdb调试方法总结

背景

在c程序中,除了基本的print,我们最常用的工具就是gdb,它有众多的优点,它能够在程序运行时,打印变量信息,也可以在程序coredump之后,离线调试,可以说,它是排查问题的利器。

gdb基本功能

在函数处打断点,在文件的某一行打断点等等

(gdb) b main

gdb打印数组

在GDB 中执行以下 Python 脚本,这个我也是第一次使用,觉得还是有点惊讶它的调试能力的。

(gdb) python

for i in range(0, 2000):

val = gdb.parse_and_eval("array[%d]->timer_head" % i)

print("array[%d] = %s" % (i, val))

end

watch变量

watch 是 GDB 的 "监视点"(watchpoint) 功能,当某个变量的值被修改时,程序自动暂停,并打印旧值和新值。这比 break + print 更高效,尤其适合追踪"谁改了我的变量"。这个是内存被改,调试的神器。

(gdb) watch variable_name

定时采集变量信息

主要用于跑测试用例的时候,没办法watch变量的情况。

while true; do sudo gdb -p $PID -batch -ex 'print counter' -ex 'detach'; sleep 1; done

总结

gdb 还有很多的调试方法,待后续使用过程中,一一补充。

相关推荐
流浪0017 分钟前
告别静态打印:Linux C 实现实时刷新进度条
linux·运维·c语言
小此方10 分钟前
Re:Linux系统篇(二十)进程篇·五:深入理解 Linux 进程优先级:从底层逻辑到实战修改
linux·运维·服务器
路溪非溪10 分钟前
Linux下物理总线驱动模型之SDIO驱动框架
linux·驱动开发
深圳市九鼎创展科技11 分钟前
九鼎创展 X7110 开发板(JH7110):国产 RISC-V 多媒体平台全解析
大数据·linux·人工智能·嵌入式硬件·ubuntu·risc-v
流浪00114 分钟前
Linux篇(八) Make 与 Makefile 超详细入门教程|从零基础到手写自动化编译
linux·运维·自动化
爱莉希雅&&&19 分钟前
Redis哨兵模式和主从复制和集群模式搭建与扩容缩容
linux·redis·缓存·集群·哨兵·数据库同步
j_xxx404_19 分钟前
Linux线程:从内存分页机制(Page Table/TLB/Page Fault)彻底读懂 Linux 线程本质
linux·运维·服务器·开发语言·c++·人工智能·ai
不做无法实现的梦~22 分钟前
怎么实现codex控制嘉立创EDA绘制原理图
linux
青梅橘子皮26 分钟前
Linux---冯诺伊曼体系结构,操作系统概况
java·linux·运维
鹏大师运维29 分钟前
不用装远程桌面!统信UOS通过SSH直接调用麒麟图形界面程序
linux·运维·网络·ssh·麒麟·x11·统信v25