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 #修改变量的文件中的值
参考:这里写链接内容
相关文章推荐
- gdb调试技巧(二)———— gdb 条件断点
- gdb调试: 多线程-宏-条件断点
- gdb断点的条件调试
- GDB条件断点不能命中的问题
- Eclipse替代ndk-gdb断点调试Android NDK程序
- 析构函数无法命中断点. 当前无法命中断点: 没有与此行关联的调试程序的目标代码类型的可执行代码. 可能的原因包括;条件编译, 编译器优化或者...
- VisualStudio调试-----条件断点
- GDB和LLDB断点调试指令
- gdb调试 list断点附近代码
- docker下gdb调试断点不停
- gdb调试断点不生效问题
- GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断
- Eclipse设置条件断点调试java程序
- VC6下 断点调试之条件断点的使用
- 调试时设置条件断点
- gdb调试(二)断点设置(英文板)
- gdb调试C语言--单步调试、断点调试
- gdb设置条件断点
- gdb设置条件断点
- C语言 命令行参数 函数指针 gdb调试