linux gdb的使用

gdb的使用

​ gdb(GNU symbolic debugger)是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。

start           #开始调试,停在第一行代码处,(gdb)start
l               #list的缩写查看源代码,(gdb)l
b <lines>       #b: Breakpoint的简写,设置断点。(gdb) b 8 
b <func>        #b: Breakpoint的简写,设置断点。(gdb) b main
i breakpoints   #i:info 的简写。(gdb)i breakpoints
d [bpNO]        #d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。(gdb)d 1

s               #s: step执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;(gdb) s
n               #n: next执行一行源程序代码,此行代码中的函数调用也一并执行。(gdb) n

r               #Run的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。(gdb) r
c               #Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。(gdb) c
finish          #函数结束

p [var]             #Print的简写,显示指定变量(临时变量或全局变量 例如 int a)的值。(gdb) p a
display [var]       #display,设置想要跟踪的变量(例如 int a)。(gdb) display a
undisplay [varnum]  #undisplay取消对变量的跟踪,被跟踪变量用整型数标识。(gdb) undisplay 1
set args            #可指定运行时参数。(gdb)set args 10 20
show args           #查看运行时参数。
q                   #Quit的简写,退出GDB调试环境。(gdb) q 
help [cmd]          #GDB帮助命令,提供对GDB名种命令的解释说明。如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。(gdb)help
回车                #重复前面的命令,(gdb)回车

test.c

#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a * b;
}
int main(void)
{
    char buf[] = "helloworld";
    int a = 3;
    int b = 5;  
    int c = 0;
    c = add(a, b);
    printf("%s a+b=%d\n", buf, c);
    c = sub(a, b);
    printf("%s a-b=%d\n", buf, c);
    c = mul(a, b);
    printf("%s a*b=%d\n", buf, c);
    return 0;
}
  • 编译的时候需要加上-g参数

gcc -o test -g test.c
gdb test

发布了101 篇原创文章 · 获赞 117 · 访问量 21万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章