ddd linux 调试工具_c++笔记(GDB调试器)

GUN工具集中的调试器是GDB(GUN Debugger) 该程序是一个交互工具,工作在字符模式,除GDB外,linux 下比较有名的调试器还有xxgdb,ddd,kgdb,ups

实践

#include <stdio.h>

int main(int argc,char **argv){
	int i;
	for(i=0;i<argc;i++){
		printf("argv[%d]:%sn",i,argv[i]);
	}

	printf("nn");

	return 0;

}
#将上述代码保存成 a.c 然后加 调试信息编译
gcc -g a.c -o a


# gdb file     file 是指编译后的可执行文件
# set args     指定运行时的参数 set args 1,2,3
# show args    查看设置好的参数
# start        开始执行
# run          开始执行 如果有断点,则停在第一个断点处
# continue     往下走一个断点
# list func    显示 func 函数的源码
# list 5       显示第 5 行 上下各5行源码
# list         显示当前行后面10行源码
# list -       显示当前行前面10行源码
# set listsize 123   设置一次显示源码的行数为123行
# show listsize      查看当前 listszie 数据


# break 设置断点   可以简写为 b
# b 10          在源码第10行设置断点
# b func        在 func 函数入口处设置断点
# info break   显示所有断点 可以简写为 i b


# 多文件设置断点
# break a.c:10               在源文件 a.c 的第10行处设置断点
# break a.c:func             在源文件 a.c 的func 函数入口处设置断点
# break class::func          在类 class 的 func 函数入口处设置断点
# break func(type,type)      同上
# break namespace::class::func    在命名空间 namespace 的类 class 的 func 函数入口处设置断点


# 条件断点
# b a.c:10 if key==5        在源文件a.c 的第10行,如果key == 5 时,则加断点


# 维护断点
# delete [range...]          删除指定断点 简写为d  如果不指定参数 则删除所有断点 range 表示断点范围(如:3-7)
# 比删除更好的一种方法是 disable 停止点  disable 之后不会删除,当需要再使用时 enable 即可
# disable [range...]         使指定断点无效 简写为 dis  如果不指定 则 disable 所有
# enable [range...]          使无效断点生效  简写为 ena  如果不指定 则 enable 所有


# 调试代码
# run                      运行程序 可简写为 r
# next                     单步跟踪 函数调用当作一条语句执行 可简写为 n
# step                     单步跟踪 函数调用进入被调用函数体内 可简写为 s
# finish                   退出进入的函数
# until                    在一个循环体内单步跟踪时 这个命令可以运行程序直到退出循环体 可简写为 u
# continue                 继续运行 停在下一个断点的位置 可简写为 c
# quit                     退出 gdb 可简写为 q


# 数据查看
# print                    打印变量 字符串  表达式等   可简写为 p


# 自动显示
# display abc              显示变量 abc
# info display             查看display设置的自动显示的信息
# undisplay num            不显示对应的 display 信息 
# disable display num      禁用对应编号的 display 信息 
# enable display num       启用对应编号的 display 信息
# delete display num       删除对应的 display 信息


#查看和修改变量的值
# ptype abc                查看变量 abc 的数据类型
# p abc                    查看变量 abc 的值
# set var abc=123          设置变量 abc 的值为123





#启动
gdb a

#设置参数
set args 1 2 3 4 "hello word"

#查看参数
show args

start

run

效果如下图

9dc2a8e5b97b6ff3ed18a41027e694fa.png
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值