#include<stdio.h>
void printAllArguments(int argsInthis,char* argumentsInThis[]);
void printAllArgsFronSecond(int argsInSecondArguments,char* argumentsSecondArguments[]);
void printLeftArgumentsFromThird(int argsNumber,char* arguments[]);
int main(int args, char *argv[]){
if(args==1){
printf("%s\n",argv[args-1]);
printf("There is only one argument\n");
}else{
int argIfArgsEqualTwo = args;
printf("There is more than one arguments\n");
printAllArguments(args,argv);
}
return 0;
}
void printAllArguments(int argsInthis,char* argumentsInThis[]){
int numberOne = 1;
printf("%s\n",argumentsInThis[0]);
printAllArgsFronSecond(argsInthis,argumentsInThis);
}
void printAllArgsFronSecond(int argsInSecondArguments,char* argumentsSecondArguments[]){
int number2 = 2;
printf("%s\n",argumentsSecondArguments[1]);
printLeftArgumentsFromThird(argsInSecondArguments,argumentsSecondArguments);
}
上边的代码用编辑器保存成printArgumentsTwo.c
。
#include<stdio.h>
void printLeftArgumentsFromThird(int argsNumber,char* arguments[]){
int number3 = 4;
for(int beginNumber = 2;beginNumber<argsNumber;beginNumber++){
printf("%s\n",arguments[beginNumber]);
}
}
上边的代码使用编辑器保存成printArgumentsFromThird.c
。
gcc -c -g -gdwarf-4 printArgumentsTwo.c -o printArgumentsTwo.o
进行编译。
gcc -c -g -gdwarf-4 printArgumentsFromThird.c -o printArgumentsFromThird.o
进行编译。
gcc -g -gdwarf-4 printArgumentsFromThird.o printArgumentsTwo.o -o printAllArgumentsTwoFile
进行链接。
gdb -q printAllArgumentsTwoFile
进入到gdb调试里边。
break 10
break 11
break 19
break 23
break 24
info break
展示一下设置的断点。
delete break 断点号
删除断点,比如delete break 1
就是删除第1个断点,要是删除没有的断点,就会提示No breakpoint number 你写错的断点号
。
clear 行号
删除断点,clear 11
删除的是第2个断点。
disable 断点号
暂停断点,经过断点时不停止。
run 1 2 3
开始调试后,发现直接到了第4个断点处。
delete break
就是删除所有断点的意思,输入“y”就会删除所有断点。
此文章为3月Day 29学习笔记,内容来源于极客时间《操作系统实战 45 讲》。