linux下gdb调试

gdb是Linux操作系统下基于命令行的程序调试工具。

以C++为例,测试程序为test.cpp,通过makefile或者命令gcc生成可执行文件test:

//-g为了调试用的 ,加个-g 是为了gdb 用,不然gdb用不到
//-o output_filename,确定输出文件的名称为output_filename,不能和源文件同名
//-c 只编译不链接,生成目标文件而不是可执行文件
gcc -g test.cpp -o test

 

启动gdb:

gdb test//不打印gdb版本信息
gdb -q test//打印gdb版本信息

  

查看代码:l(list),默认显示10行,按回车键继续查看;

 

运行程序:r(run),运行程序直到结束或遇到断点

        c(continue),继续执行程序,直到下一个断点或者结束

 

设置断点:b(break) xxx,在第xxx行设置断点

     delete n:删除断点编号为n的断点

     info breakpoints,显示断点信息

(gdb) info breakpoints
//Num:断点编号
//Disp:断点执行一次之后是否有效 kep:有效 dis:无效
//Enb: 当前断点是否有效 y:有效 n:无效
//Address:内存地址
//What:位置
Num     Type           Disp   Enb   Address               What
1       breakpoint     keep   y     0x00000000004030d0    in main(int, char**) at test.cpp:62

  

单步执行:n(next),单步执行程序,但是遇到函数时不进入函数
        s(step),单步执行程序,但是遇到函数会进入函数
    

退出gdb:q(quit),退出gdb调试 

 

查看运行信息:info program,来查看程序的是否在运行

          bt,显示当前运行的堆栈列表

       set args xxx,指定运行时的参数为xxx

       show args:查看设置好的参数

 

多进程/多线程调试:attach pid,将PID为pid的进程附加到gdb调试器上(调试该进程)

          info threads,显示当前可以调试的所有线程

          thread id,调试ID为id的线程

 

参考链接 linux下gdb调试方法与技巧整理_niyaozuozuihao的博客-CSDN博客_gdb调试

linux下gdb调试

上一篇:记录cronsun搭建和对应的数据数据库迁移


下一篇:select 1 from ... sql语句中的1代表什么意思?