gdb调试宏、条件断点、命令行参数

gdb调试宏、条件断点、命令行参数

例子:

#include <stdlib.h>
#include <stdio.h>

#define MACRO1(x) (++(x))
#define MACRO2(x) (MACRO1(x)+100)
#define MACRO3(x) (MACRO2(x)+200)

int main(void)
{
    int a = 0;
    int b = 0;
    b = MACRO3(a);
    printf("%d\n", b);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

1、调试宏 
在GCC编译程序的时候,加上-ggdb3/-g3参数,这样,你就可以调试宏了。 
macro expand/exp 展开宏定义 
info macro 查看宏展开,及被调用处

(gdb) macro exp MACRO3(3)   //展开宏,并传入值
expands to: (((++(3))+100)+200)
(gdb) info macro MACRO3    //查看这个宏在哪些文件里被引用了,以及宏定义是什么样的
Defined at /mnt/hgfs/VMUB/codeTs/test/macro_gdb.c:6
#define MACRO3(x) (MACRO2(x)+200)
  • 1
  • 2
  • 3
  • 4
  • 5

2、条件断点 
break line-or-function if expr

(gdb) break main if b = 0 
Breakpoint 1 at 0x8048426: file macro_gdb.c, line 10.
  • 1
  • 2

3、命令行参数 
可以使用两种方法输入命令行参数 
1)run 命令行参数 
2)set args 命令行参数 
如:我的程序中需要输入的时服务器端ip地址,可以通过以下两种方法输入 
1)如果直接运行程序,run www.baidu.com 
2)set args www.baidu.com,后面再继续进行调试

4、修改变量的值 
p a = 100 #修改变量的文件中的值 
参考:这里写链接内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值