1 / 10
文档名称:

gdb的调试方法.doc

格式:doc   大小:79KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

gdb的调试方法.doc

上传人:85872037 2017/2/22 文件大小:79 KB

下载得到文件列表

gdb的调试方法.doc

相关文档

文档介绍

文档介绍:gdb 的调试方法 1. gdb 的编译方法: 一般来说 GDB 主要调试的是 C/C++ 程序。要调试 C/C++ 程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器( cc/gcc/g++ )的-g 参数可以做到这一点,如: $ cc–g –o hello $ g++ -g –o hello 2. 启动 GDB 的方法有以下几种: ■ gdb <program> program 也就是你的执行文件,一般在当前目录下。■ gdb <program> core 用 gdb 同时调试一个运行程序和 core 文件, core 是程序非法执行后 core dump 后产生的文件。■ gdb <program> <PID> 如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程 ID。 gdb 会自动 attach 上去,并调试它。 program 应该在 PATH 环境变量中搜索到。详细的开关可以用 gdb – help 3. 启动 GDB ,进入调试环境。(gdb) help 4. 搜索源代码不仅如此, GDB 还提供了源代码搜索的命令: forward-search<regexp> search<regexp> 向前面搜索。 reverse-search<regexp> 全部搜索。其中<regexp> 就是正则表达式,也可以是一个字符串的匹配模式,关于正则表达式,我就不在这里说了,还请各位查看相关资料。 5. 源代码的内存可以使用 info line 命令来查看源代码在内存中的地址。 Info line 后面可以跟“行号”, “函数名”,“文件名:行号”,“文件名:函数名”,这个命令会打印出所指定的源代码在运行时的内存地址,如: (gdb) info line :func Line 5 of "" starts at address 0x8048456 <func+6> and ends at 0x804845d <func+13>. 还有一个命令( disassemble )你可以查看源程序测当前执行时的机器码,这个命令会把目前内存中的指令 dump 出来。如下面的示例表示查看函数 func 的汇编代码。查看运行时数据在你调试程序时,当程序被停住时,可以使用 print 命令(简写命令为 p ),或是同义命令 inspect 来查看当前程序的运行数据。 print 命令的格式是: print<expr> print/<f><expr> <expr> 是表达式,是你所调试的程序的语言的表达式( GDB 可以调试多种编程语言), <f> 是输出的格式,比如,如果要把表达式按 16 进制的格式输出,那么就是/x。可以通过这种形式指定你想查看的变量,是哪个文件中的或是哪个函数中的。例如,查看文件 中的全局变量 x 的值: (gdb) p‘ ’::x 当然, “::”操作右边则是你想查看的内存的长度。例如,你的程序中有这样的语句: int *array = (int*)malloc(len*sizeof(int)) 于是,在 GDB 调试过程中,你可以用如下命令显示出这个动态数组的取值: p *******@len @ 的左边是数组的首地址的值,也就是变量