【前言】GDB调试,无往不来的调试利器,堆栈调用的内存问题都能排查到。GDB可调试一个可执行文件,运行错误产生的core文件等。特别是运行core文件的gdb,十分方便的找出笔者再次做一个GDB的浅探。
【参数介绍】
- 命令
break (简写: b) --------断点
run (简写:r) --------运行
bt -------查看调用堆栈
print (简写:p) --------打印值
c --------继续执行
next ---------单步调试,但不进入函数内部
step ----------单步调试,进入函数内部
list ----------查看当前断点前后的代码(如果当前只有 so 文件,无相应的源文件则看不到源码)
edit [file:]function ---------查看当前代码段(没用过,不常用吧)
help [name] ---------查看帮助
quit (简写: q) ---------退出GDB
- 选项
-help (简写:-h) -------查看所以的命令,以及包含针对命令简短的解释
-exec (简写:-e) -------执行可执行文件
-core (简写: -c) --------设置core dump的监察文件
-command (简写:-x) ------- 执行来自的GDB命令
-ex --------执行给定的GDB命令
【示例】
#加载 stl-views.gdb 文件 。用于查看map、list等的值
(gdb) source stl-views.gdb
#当相应的so还未加载时打断点会提示,没有对应文件。加上此语句就不会有问题
(gdb) set breakpoint pending on
#设置参数
(gdb) set args ./config_login
#断点调试
(gdb) b 586
#运行程序
(gdb) r
#查看加载的so包
(gdb) info sharedlibrary
From To Syms Read Shared Library
0x00007ffff7ddbae0 0x00007ffff7df624a Yes (*) /lib64/ld-linux-x86-64.so.2
0x00007ffff7bb16e0 0x00007ffff7bca160 Yes ./lib/libcts_core.so
0x00007ffff7fd4890 0x00007ffff7fed3ab Yes ./lib/libzookeeper_mt.so.2
0x00007ffff7979ed0 0x00007ffff797a9d0 Yes (*) /lib64/libdl.so.2
#在so包内打断点
(gdb) b CLoginPlugin.cpp:137
Breakpoint 4 at 0x7ffff14b0665: file /home/CLoginPlugin.cpp, line 137.
【core文件配置】
#配置core文件运行时出错才能对应生成core文件
$ ulimit -C unlimited
#一旦产生core文件即可用以下命令查看出错点。 cts_shell是可执行文件
$gdb cts_shell core.17241
#加载之后使用 bt 查看调用堆栈
>bt
【后记】小小拙见,不具参考价值。
继续阅读与本文标签相同的文章
技巧!PDF技巧之如何快速在文档中添加水印
-
首个二类资源区平价光伏电站正式并网发电
2026-05-14栏目: 教程
-
AI+5G科技创新 视频行业呈现轻应用化趋势
2026-05-14栏目: 教程
-
1.98亿滴滴用户添加了紧急联系人 每天百万个订单行程分享给亲友
2026-05-14栏目: 教程
-
工程院院士刘韵洁:5G前景很大,但主要是行业应用
2026-05-14栏目: 教程
-
陆奇:看好5G技术,但应用好5G还需要时间
2026-05-14栏目: 教程
