Linux下编程工具的使用(5) - GDB调试工具(1)
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-30
gdb) n 20 result = i; (gdb) n 18 for(i=1; i<=100; i ) (gdb) n 20 result = i; (gdb) c <--------------------- 继续运行程序, continue 命令简写. Continuing. result[1-100] = 5050 <---------- 程序输出. Breakpoint 2, func (n=250) at tst.c:5 5 int sum=0,i; (gdb) n 6 for(i=1; i<=n; i ) (gdb) p i <--------------------- 打印变量 i 的值, print 命令简写. $1 = 134513808 (gdb) n 8 sum =i; (gdb) n 6 for(i=1; i<=n; i ) (gdb) p sum $2 = 1 (gdb) n 8 sum =i; (gdb) p i $3 = 2 (gdb) n 6 for(i=1; i<=n; i ) (gdb) p sum $4 = 3 (gdb) bt <--------------------- 查看函数堆栈. #0 func (n=250) at tst.c:5 #1 0x080484e4 in main () at tst.c:24 #2 0x400409ed in __libc_start_main () from /lib/libc.so.6 (gdb) finish <--------------------- 退出函数. Run till exit from #0 func (n=250) at tst.c:5 0x080484e4 in main () at tst.c:24 24 printf("result[1-250] = %d n", func(250) ); Value returned is $6 = 31375 (gdb) c <--------------------- 继续运行. Continuing. result[1-250] = 31375 <---------- 程序输出. Program exited with code 027. <-------- 程序退出,调试结束. (gdb) q <--------------------- 退出 gdb . 使用GDB 一般来说 GDB 主要调试的是 C/C 的程序.要调试 C/C 的程序,在编译时,我们要把调试信息加到可执行文件中.使用编译器(g cc/gcc/g )的 -g 参数可以做到这一点.如: > gcc -g hello.c -o hello > g -g hello.cpp -o hello 如果没有 -g ,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址.当你用 -g 把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用 gdb 来调试他. 启动 GDB 的方法有以下几种: 1 、 gdb <program> program 也就是你的执行文件,一般在当然目录下. 2 、 gdb <program> core 用 gdb 同时调试一个运行程序和 core 文件, core 是程序非法执行后 core dump 后产生的文件. 3 、 gdb <program> <PID> 如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程 ID . gdb 会自动 attach 上去,并调试他. program 应该在 PATH 环境变量中搜索得到. GDB 启动时,可以加上一些 GDB 的启动开关,详细的开关可以用 gdb -help 查看.我在下面只列举一些比较常用的参数: -symbols <file> -s <file> 从指定文件中读取符号表. -se file 从指定文件中读取符号表信息,并把他用在可执行文件中. -core <file> -c <file> 调试时 core dump 的 core 文件. -directory <directory> -d <directory> 加入一个源文件的搜索路径.默认搜索路径是环境变量中 PATH 所定义的路径. GDB 的命令 启动 gdb 后,就你被带入 gdb 的调试环境中,就可以使用 gdb 的命令开始调试程序了, gdb 的命令可以使用 help 命令来查看,如下所示: $ gdb GNU gdb 6.7.1-debian Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3 : GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show w |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: samba服务器配置疑难杂症下一篇: FlashFXP 连接Linux服务器连不上原因
关于Linux下编程工具的使用(5) - GDB调试工具(1)的所有评论