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 还有很多的调试方法,待后续使用过程中,一一补充。

相关推荐
hahjee13 分钟前
【鸿蒙PC】kcp 移植:AtomCode Skills 4 步速通单文件 C 库适配
c语言·华为·harmonyos
SWAGGY..20 分钟前
Linux系统编程:(十三)环境变量
java·linux·算法
howard200535 分钟前
3.9 初探Shell命令
linux·shell命令
zh路西法36 分钟前
基于yaml-cpp的C++参数服务器设计2:多级参数配置
linux·服务器·c++
AI科技星1 小时前
《数术工坊:非欧射影录》类型:硬核光影·几何本源
c语言·开发语言·网络·量子计算·agi
QiLinkOS1 小时前
极客与商业思维的融合实践(1)
c语言·数据库·c++·人工智能·算法·开源协议
坚果派·白晓明2 小时前
鸿蒙PC】libuv适配:AtomCode Skills一站式指南
c语言·c++·华为·ai编程·harmonyos·atomcode
c++之路2 小时前
CMake 系列教程(五):进阶技巧
c语言·开发语言·c++
睡一觉就好了。3 小时前
make基础
linux
睡一觉就好了。3 小时前
gcc/g++
linux