(1) 首先感谢这位大师的文章 非常感谢 1 ,以及 非常感谢 2
以及他的教学视频地址 非常感谢 3
另一个很好的视频教学, 非常感谢 4
(2) gdb 调试,适用于 类 unix 系统。其没有图形界面。 CGDB 、 GDTGDB 、 GDB-T 、 GDB-GUI 、这些封装了 gdb 的库 。最好还是命令行:最完善,功能最全。其实掌握了以后,命令行还是最简单 的。操作起来也最方便。
先给出一言的整理:
(3) 本机已安装 gdb :
(4) 启动 gdb :
# 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序
gdb ./typeid_test
# 2. 可执行程序需要输入参数时, 我们使用 gdb --args + 可执行程序名 + args(参数列表)
gdb --args ./MPEG2TransportStreamIndexer1 /work/video/sky.ts
#2 也可以先不带参数启动 gdb 。在 r 之前,用 set 指令来设置参数
set args 命令行参数
# 3. 连接已经运行的程序
gdb -p + pid
# 4. 可执行程序带参数 (一)gdb + 可执行程序名 (二)然后再使用set args + 参数
gdb + 可执行程序名
++ 以上是代码总结。以下是实例操作:
++ 打断点的方法:
(5) 查看源码 l 或着 list :
# list 简称 l , 默认向下,如果想向上需要指定对应负数行数 l -3
list
++ 实操如下:
++ 以上显示是因为没有启动代码。若启动代码以后, list 就会显示断点上下的 9 行 代码。
(6) 退出指令 quit :
++
(7)带参数运行的书写格式:
(8) set args ***** 后补参数的使用举例:
++空格,在很多函数里有特殊的语法含义。不要改变这个规则,变量命名里最好不要引入空格,否则就要用双引号括起来:
(9) **运行程序使用 run 或 r ** :
# 使用run 命令运行程序,简称 r
run
++ 举例:
(10) 设置断点 b 函数名, 或 b 文件名:行数 :
# 1. b + func 。 对于 C++ 则要提供命名空间、类型等域名,再跟函数名
b main
# 2. b + file : line 。对于 C++ 则要提供命名空间、类型等域名,
b main.cpp : 36
++ 举例:
(11)
谢谢