linux学习笔记-读《Linux编程技术详解》(3)-GDB调试

GDBGNU Debuger的缩写。有Windows版本,DDD是以GDB为后台的调试工具,GDB支持C/C++PascalFortran

使用GDB调试程序:为了让GD B可以获得程序的信息,需要在编译的时候加入参数g。这时,编译命令变为了”gcc -o p3.4 -g p3.4.c”

GDB 提供了执行Shell命令的功能。输入“shell 命令,可执行shell脚本,”shell ls”

list: 现实代码内容。如: listlist 3,8

run: GDB中运行加载的可执行程序;

set args 具体参数:设置程序运行时的参数;

show args:查看程序运行时的参数;

print 具体使用命令为”print 变量名。在程序调试中,可以使用print命令在程序运行时查看变量的取值情况;

whatisptype): 具体使用形式为“whatis 变量名”。在调试中,可以使用whatis查看变量的类型。ptype提供了类似的功能,相比whatis而言,该命令功能更为强大,可以给出结构体的定义情况。

break 设置程序运行断点。主要有以下的命令形式:

                    “break 行号,运行到某行停止运行;

                    “break 函数名称,程序进入指定函数时停止运行;

“break 行号/函数名 if 条件,在符合条件时,运行到指定行号/函数的时候停止程序运行。

continue:从断点位置处继续执行程序;

info break:现实当前设置的断点信息;

delete breakpoint 断点号:删除指定的断点;

disable breakpoint 断点号:禁用指定的断点;

enable breakpoint 断点号:允许指定的断点;

next/stepnext 使程序单步执行。如果在代码中遇到了某个函数,想进入该函数,了解程序运行情况,可以使用step命令。使用finish退出函数回到调用该函数处。

GDB还支持对已经运行的进程进行调试。使用file命令指定进程所联系的源代码,然后用”attach 进程ID”来连接一个运行的进程。使用continue命令可以继续进程的运行。用detach可以断开调试的连接。如下为GDB常用命令列表:

常用GDB调试命令简表

命令

说明

备注

file 文件名

gdb中载入某可执行文件

 

break

设置断点

break 支持如下的几种形式:

break 行号;

break 函数名称;

break 行号/函数名 if 条件

info

查看和可执行程序相关的各种信息

info breakpoint 只是众多info命令中的一种,info可以查看可执行程序的很多信息,例如,info function可以查看所有函数名称。关于info命令的具体用法,可以在GDB中使用help info查看相关的帮助

kill

终止正在调试的程序

 

print

现实变量或表达式的值

调用形式是”print 变量或表达式

set args

设置调试程序的运行参数

调用格式为”set args 参数列表

delete

删除设置的某个断点或观测点

delete后可以使用breakpointscheckpointdisplaymemtracepoints,具体使用情况可以在gdb中输入help delete查看

clear

删除设置在指定行号或函数上的断点

 

continue

从断点处继续执行程序

 

list

列出GDB中加载的可执行程序的代码

不带任何参数使用list命令时,会从开始位置列出所有陈旭代码,同时list还支持列出指定行号之间的代码,具体命令为”list num1, num2”

watch

在程序中设置观测点(如果数据改变,将给出变化前后的情况)

 

run

运行在GDB中加载的可执行程序

 

next

单步执行所加载的程序

 

step

进入所调用的函数内部,查看执行情况

退出调用函数,回到调用处使用finish命令

whatis

查看变量或函数类型

调用格式为”whatis 变量名/函数名

ptype

显示数据结构定义情况,与whatis不同的是,ptype可以显示类或数据结构的定义情况

调用命令为”ptype 变量名

make

在不退出GDB调试环境的情况下,编译程序

 

quit

退出GDB调试环境

 

 

“help 具体分类可以查看支持的具体命令,如”help running”

GNU项目中,比较成功的图形化调试工具,它们依赖于后台运行的命令调试工具,比较成功的有DDD调试工具。DDDData Display Debugger的缩写。DDD可以做为GDBDBXWDBLadebugJDBXDBPerl调试器或Bash调试工具等很多命令调试工具的图形前端。

GDB远程调试

在嵌入式开发中,进行开发的机器称为宿主机。目前,在嵌入式环境下,Linux的内核调试和用户程序调试主要是使用KGDBgdbserver来实现的。KGDB可以对内核的运行情况进行远程调试。而使用gdbserver可以通过远程调试用户空间的程序。如下以在嵌入式开发中使用GDB+gdbserver为例,说明如何进行远程调试和程序开发:

1.         在目标板上运行gdbserver。使用gdbserver命令指定宿主机的IP地址和连接端口号,如:”gdbserver 192.168.2.1:8888 program”表示在gdbserver中加载program程序,宿主机IP地址为192.168.2.1,在目标板的8888端口监听通信;

2.         在宿主机上运行GDBDDD调试工具,使用target命令来连接gdbserver,如:”target remote 192.168.2.2:8888”表示连接IP地址为192.168.2.2,端口号为8888的目标板。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值