【前言】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

【后记】小小拙见,不具参考价值。

收藏 打印