使用 GDB 调试 Linux 软件
http://www.ibm.com/developerworks/cn/linux/sdk/gdb/[2011/1/1 21:56:52]
中国 [ 选择 ]
dW 全全全全
首页 解决方案 服务 产品 支持与下载 个性化服务
David SeagerCICS/390 开发部,IBM Hursley
简介:
Linux 的大部分特色源自于 shell
的 GNU 调试器,也称作 gdb。gdb 可以让您查看程序
的内部结构、打印变量值、设置断点,以及单步调试源代码。它是功能极其强大的工具,适用
于修复程序代码中的问题。在本文中,David Seager 将尝试说明 gdb 有多棒,多实用。
标记本文!
发布日期:
2001 年 2
月 01 日
级别:
初级
访问情况
1861 次浏览
建议
:
0 (
添加评论)
平均分 (共 2 个评分 )
developerWorks 中国 Linux 文档
库
编译
开始调试之前,必须用程序中的调试信息编译要调试的程序。这样,gdb 才能够调试所使用的变量、代码行和函数。如果要进行编
译,请在 gcc(或 g++)下使用额外的 '-g' 选项来编译程序:
回页首
运行 gdb
在 shell 中,可以使用 'gdb' 命令并指定程序名作为参数来运行 gdb,例如 'gdb eg';或者在 gdb 中,可以使用 file 命令来装入要调试
的程序,例如 'file eg'。这两种方式都假设您是在包含程序的目录中执行命令。装入程序之后,可以用 gdb 命令 'run' 来启动程序。
回页首
调试会话示例
如果一切正常,程序将执行到结束,此时 gdb 将重新获得控制。但如果有错误将会怎么样?这种情况下,gdb 会获得控制并中断程
序,从而可以让您检查所有事物的状态,如果运气好的话,可以找出原因。为了引发这种情况,我们将使用一个
示例程序:
代码示例 eg1.c
这个程序将运行 10 次 for 循环,使用 'wib()" 函数计算出累积值,最后打印出结果。
在您喜欢的文本编辑器中输入这个程序(要保持相同的行距),保存为 'eg1.c',使用 'gcc -g eg1.c -o eg1' 进行编译,并用 'gdb eg1'
启动 gdb。使用 'run' 运行程序可能会产生以下消息:
内容
编译
运行 gdb
调试会话示例
使用断点
更多断点和观察点
core 文件
堆栈跟踪
连接到其它进程
其它小技巧
结束语
参考资料
关于作者
建议
使用 GDB 调试 Linux 软件
GNU 调试器简介
gcc -g eg.c -o eg
#include
int wib(int no1, int no2)
{
int result, diff;
diff = no1 - no2;
result = no1 / diff;
return result;
}
int main(int argc, char *argv[])
{
int value, div, result, i, total;
value = 10;
div = 6;
total = 0;
for(i = 0; i < 10; i++)
{
result = wib(value, div);
total += result;
div++;
value--;
}
printf("%d wibed by %d equals %d", value, div, total);
return 0;
}
dW 全部内容
搜索