1. 大致流程
1. 编译程序
g++ -g main.cpp -o main
2. 进入gdb
gdb main
3. 输入断点
4. 输入参数运行
run -a -n
2. 实例
2.1 编写一个getopt程序
// filename:getopt.cpp
#include <iostream>
#include <unistd.h>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
int ch;
opterr = 0;
while((ch = getopt(argc,argv,"a:be:"))!=-1)
{
switch(ch)
{
case 'a':
// 获取-a 后面的参数
printf("option a:'%s'\n",optarg);
break;
case 'b':
// b后面不能带参数
printf("option b: b'%s'\n");
break;
case 'e':
printf("option e:'%s'\n",optarg);
break;
default :
printf("other optopt + %c\n",ch);
}
}
return 0;
}
2.2 正常模式下编译运行
[root@tianyiyi getopt]# g++ getopt.cpp -g -o getopt
[root@tianyiyi getopt]# ./getopt -a A参 -b -e E参
option a:'A参'
option b: b'b'
option e:'E参'
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/70d621842d94cd6e30c0c8c1298fc1f0.png)
2.3 gdb 下调试
[root@tianyiyi getopt]
// 进入gdb下
(gdb) run -a 这是A的参数 -b -e 这是E的参数
option a:'这是A的参数'
option b: b'b'
option e:'这是E的参数'
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/454f612d6642199c0f10839b46253065.png)
2.4 加断点调试
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4a2708e1b8c8f52f3c53e5ea396e2cb3.png)