静水流长

常用链接

统计

最新评论

gdb调试常用命令

    使用 gcc -Wall -pedantic -ansi 这些选项将启用许多警告和其他检查来检验程序是否符合C语言标准。
    gdb所有版本都支持“空命令“,即直接按下回车键再次执行最近执行过的那条命令。再用step或next命令单步执行程序时,这个“空命令“非常有用。
    run:运行一个程序,在run命令中的给出的所有参数都将作为程序的参数传递给程序。
    backtrace:可以查看程序是如何到达这一位置的。
    print:给出变量和其他表达式的内容。可以用print命令的表达式来查看处理过的数组元素,gdb允许我们使用几乎所有合法的C语言表达式来打印变量、数组元素和指针的取值。gdb将命令的结果保存在伪变量$<number>中。最后一次操作的结果总是为$,倒数第二次操作的结果为$$。这使得我们可以把某次操作的结果用在另一个命令中。例如:
    (gdb) print j
    $3 = 4
    (gdb) print a[$-1].key
    $4 = 1
    要打印出一组连续的数据项,可以使用@<number>让gdb打印除指定书目的数组元素。例如:
    (gdb) print array[0]@5
    list:这个命令会打印出围绕当前位置前后的一段代码,如果继续使用list命令,会显示更多的代码。我们也可以给list命令提供一个行号活函数名作为参数,它将显示指定位置前后的代码。
    break:设置断点。此外。我们可以修改断点设置,使程序不是在断点处停下来,而只是显示要查看的数据,然后继续执行。我们用commands命令来完成这一工作。它的作用是指定程序到达断点位置时需要执行的调试器命令。
    (gdb) commands 2
    Type commands for when breakpoint 2 is hit, one per line. 
    End with a line saying just "end".
    > dispaly
    > cont
    > end
    通过将断点的设置与相应的操作结合起来,就可以尝试修改程序(也被称为打补丁)而不需要修改程序的源代码并重新编译。可以用info命令查看曾经设置过的断点及display命令的内容,如下所示:
    (gdb) info display
    Auto-display expressions now in effect:
    Num   Enb   Expression
    1:    y    array[0] @ 5
    (gdb) info break
    Num  Type        Disp  Enb   Address     What
    1    breakpoint  keep  y     0x08048427  in sort at debug1.c:21
         breakpoint already hit 3 times
         cont
     设置命令如下:
     (gdb) commands 2
     Type commands for when breakpoint 2 is hit, one per line.
     End with a line saying just "end".
     > set variable n = n + 1
     > cont
     > end

posted on 2010-09-02 19:13 LinusYu 阅读(545) 评论(0)  编辑 收藏 引用 所属分类: C++