您的位置:首页 > 其它

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

2018-02-05 09:52 211 查看

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 #修改变量的文件中的值 
参考:这里写链接内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: