荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (好好学习,天天向上), 信区: Linux
标  题: [转]GNU中的调试工具Gdb
发信站: BBS 荔园晨风站 (Mon Jan 24 17:21:15 2000), 转信

【 以下文字转载自 zzt 的信箱 】
【 原文由 zzt.bbs@bbs.zd.dhs.org 所发表 】
作者: fuse (保险丝) 站内: Linux
标题: GNU中的调试工具Gdb
时间: Tue Dec 28 18:45:34 1999


转载自http://bricks.net.dlut.edu.cn/gnu/gdb.htm


                                                GNU中的调试工具Gdb



Gdb是GNU的超级调试工具,功能强大,无法控制.本文只能介绍
一些常用的命令.为了使用Gdb,在编译时加上参数 -g.
如:
g.c
#include <stdio.h>
void b();

main()
{
int i=10;
b();
}
void b()
{
int i;
i=100;
}
gcc a.c -g
gdb a.out
l 命令来列出源码
(gdb) l
1 #include <stdio.h>
2 void b();
3
4 main()
5 {
6 int i=10;
7 b();
8 }
9
10 void b()
(gdb) l
11 {
12 int i;
13 i=100;
14 }

l n,m
列出从n到m.

l function
列入出函数function的源码.

r 运行程序,r 后可直接接参数, 参数被传给程序.

p 命令可以看个变量的内容.如:(gdb)p i

断点的设置和管理:

b 设置断点.
b 行号
b 函数名
每一个断点用一个序列号来描述.

c 继续运行

如:
(gdb) b b
Breakpoint 1 at 0x804845a: file g.c, line 13.
---
序列号为1
(gdb) r
Starting program: /root/tmp/a.out

Breakpoint 1, b () at g.c:13
13 i=100;
(gdb) c
Continuing.

Program exited with code 0240.

info breakpoint 可以察看现在的断点情况.

delete 序列号 用来删除断点
clear 行号 也是用来删除断点的

enable 序列号 允许一个断点
disable 序列号 禁止一个断点

tb 创建一个临时断点,中断一次后即被禁止.

其实,在设断点时还可以加条件,例如:
b 100 if ( i == 10 )
但运行到100行且i等于10则中断.

如果希望在i等于100时被中断,而不管运行到哪里,可用下面的
命令: watch i == 100. 如果希望无论何时只要存取i时,就会被中断
awatch i.

命令bt产生议长列表,包含了从最近的过程开始的所有的有效过程
和调用这些进程的参数.

用set variable i=100 可以改变变量i的值.

用where可以知道当前的位置.
用whatis和ptype可以显示变量的类型.你试一试就知道了.


单步执行:
step
next
区别在于,step可以调试进一个函数的内部.

看看下面一个程序:
a.c

a()
{
int i=0;
b()
}
b()
{
int i;
i=100;
......

当你调试进函数b时,你用p i会看到b 中的 i.实际上,这些局部变
量是存栈中的,在gdb中可用up和down来在堆栈中移动.在上面这个
例子中,
(gdb)p i
i = 100 //b中的i
(gdb)up //切换到函数a的堆栈中
(gdb)p i //a中的i
i = 0
(gdb)down //返回b

你可以直接使用命令call来调用一个函数,当你在一个函数中时,
你可以用finish来结束本次调用(后面的代码被运行),也可以用
(return 返回值)来强制返回(后面的代码不被运行).

在gdb中处理信号:
handle 信号名 option
option
nostop 不发送给程序,也不停止程序.
stop 停止程序运行,以便调试
print 打印一条消息
noprint 不显示消息
pass 将信号传递给程序
nopass 不把信号传递给程序

你可以使用(signal 信号名)来主动发送一个信号.

                                [home][Gnu][Gnu Documents][Linux][Linux Documen
ts][About us]

?

--
   ★    万世留名我不希罕 倒不介意留下一些芳菲一些香
 ^|^   不染不沾不湿 不即不倚不忘   只想轻轻松松活一场
   〉        浮生独来独去独往 倒不介意  留下 一番  情意几番狂


--
※ Origin: 笑 书 亭 <bbs.zd.dhs.org>
◆ From: 210.32.151.168
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店