GDB调试备忘

GDB调试备忘

0.如果有一个需要Debug的程序Love.cpp

#include<iostream>using namespace std;void func(int m){  printf("第%d次说爱你";m);}int main() {  for(int i=0;i++;i<=99){    func(i);  return 1;}

1.使用GDB操作

1.1进入GDB:

使用gcc在Debug模式下编译生成执行文件

gcc -g Love.cpp -o Love

使用GDB调试:

gdb Love

1.2 GDB命令

帮助:
   (gdb) help list
从首行列出源码:相当于list,默认10行:
   (gdb) l
   (gdb) set listsize 20---------------->修改列出源码行数
   (gdb) l 3,7---------------->显示3-7行代码
   (gdb) func---------------->显示func函数周围代码
设置断点: b或者break :
   (gdb) b
   (gdb) b 5 ---------------->表示从在5行处
   (gdb) b Func ---------------->表示从在函数Func()处
   (gdb) r ---------------->run
   (gdb) n ---------------->next单步调试
   (gdb) step ---------------->step单步调试,会进入函数内部
   (gdb) c ---------------->continue执行到下一断点处或者直接输出
   (gdb) finish ---------------->退出调用的函数

   (gdb) info break ---------------->表示查看所有断点信息
   (gdb) enable 2 ---------------->enable 断点号
   (gdb) delete 2 ---------------->删除断点断点号
   clear ---------------->删除程序中所有断点
   clear 行号 ---------------->删除该行的断点
   clear 函数名 ---------------->删除该函数的断点
打印,查找:
   (gdb) p i ---------------->print打印变量i
   (gdb) whatis i ---------------->显示变量类型
   (gdb) search Func ---------------->从头查找Func
终止循环体:
   (gdb) untill或者u
给main函数赋值:
   set args 字符串1 字符串2 字符串3 ......
     (gdb) set args a b c ---------------->argc[0] = a,argc[1] = b,argc[2] = c
GDB中使用shell:
   (gdb) shell ls
GDB中查看数组:
int *array = (int *) malloc (8* sizeof (int));
   (gdb) p *array@len ---------------->查看这个动态数组的所有值
int array[3] = {1,2,3};
   (gdb) p array ---------------->查看这个静态数组的所有值

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部