jsp网站开发的mvc,汕头企业建站系统,优酷网站建设视频教程集,个人证书查询一、Linux调试器-gdb使用
1.1背景
程序的发布方式有两种#xff0c;debug模式和release模式Linux gcc/g出来的二进制程序#xff0c;默认是release模式要使用gdb调试#xff0c;必须在源代码生成二进制程序的时候, 加上-g 选项#xff3b;重要#xff3d;
1.2开始使用 …一、Linux调试器-gdb使用
1.1背景
程序的发布方式有两种debug模式和release模式Linux gcc/g出来的二进制程序默认是release模式要使用gdb调试必须在源代码生成二进制程序的时候, 加上-g 选项重要
1.2开始使用
gdb binFile 退出 ctrl d 或 quit 调试命令listl 行号显示binFile源代码接着上次的位置往下列每次列10行。重要listl 函数名列出某个函数的源代码。r或run运行程序。重要n 或 next单条执行。重要s或step进入函数调用重要break(b) 行号在某一行设置断点重要break 函数名在某个函数开头设置断点info break 查看断点信息。finish执行到当前函数返回然后挺下来等待命令print(p)打印表达式的值通过表达式可以修改变量的值或者调用函数p 变量打印变量值。重要set var修改变量的值continue(或c)从当前位置开始连续而非单步执行程序重要run(或r)从开始连续而非单步执行程序delete breakpoints删除所有断点delete breakpoints n删除序号为n的断点重要disable breakpoints禁用断点enable breakpoints启用断点info(或i) breakpoints参看当前设置了哪些断点display 变量名跟踪查看一个变量每次停下来都显示它的值undisplay取消对先前设置的那些变量的跟踪until X行号跳至X行breaktrace(或bt)查看各级函数调用及参数infoi) locals查看当前栈帧局部变量的值quit退出gdb
1.3理解 二、Linux项目自动化构建工具-make/Makefile
2.1背景 会不会写makefile从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数其按类型、功能、模块分别放在若干个目录中makefile定义了一系列的规则来指定哪些文件需要先编译哪些文件需要后编译哪些文件需要重新编译甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”一旦写好只需要一个make命令整个工程完全自动编译极大的提高了软件开发的效率。make是一个命令工具是一个解释makefile中指令的命令工具一般来说大多数的IDE都有这个命令比如Delphi的makeVisual C的nmakeLinux下GNU的make。可见makefile都成为了一种在工程方面的编译方法。make是一条命令makefile是一个文件两个搭配使用完成项目自动化构建。 2.2实例代码
#include stdio.h
int main()
{printf(hello Makefile!\n);return 0;
}
Makefile文件
hello:hello.ogcc hello.o -o hello
hello.o:hello.sgcc -c hello.s -o hello.o
hello.s:hello.igcc -S hello.i -o hello.s
hello.i:hello.cgcc -E hello.c -o hello.i
.PHONY:clean
clean:rm -f hello.i hello.s hello.o hello
2.3依赖关系
上面的文件hello ,它依赖hell.ohello.o , 它依赖hello.s hello.s , 它依赖hello.ihello.i , 它依赖hello.c
2.4依赖方法
gcc hello.* -option hello.* ,就是与之对应的依赖关系 2.5原理
make是如何工作的,在默认的方式下也就是我们只输入make命令。那么 1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2. 如果找到它会找文件中的第一个目标文件target在上面的例子中他会找到“hello”这个文件并把这个文件作为最终的目标文件。 3. 如果hello文件不存在或是hello所依赖的后面的hello.o文件的文件修改时间要比hello这个文件新可以用touch 测试那么他就会执行后面所定义的命令来生成hello这个文件。 4. 如果hello所依赖的hello.o文件不存在那么make会在当前文件中找目标为hello.o文件的依赖性如果找到则再根据那一个规则生成hello.o文件。这有点像一个堆栈的过程 5. 当然你的C文件和H文件是存在的啦于是make会生成 hello.o 文件然后再用 hello.o 文件声明make的终极任务也就是执行文件hello了。 6. 这就是整个make的依赖性make会一层又一层地去找文件的依赖关系直到最终编译出第一个目标文件。 7. 在找寻的过程中如果出现错误比如最后被依赖的文件找不到那么make就会直接退出并报错而对于所定义的命令的错误或是编译不成功make根本不理。 8. make只管文件的依赖性即如果在我找了依赖关系之后冒号后面的文件还是不在那么对不起我就不工作啦。 2.6项目清理
工程是需要被清理的像clean这种没有被第一个目标文件直接或间接关联那么它后面所定义的命令将不会被自动执行不过我们可以显示要make执行。即命令——“make clean”以此来清除所有的目标文件以便重编译。但是一般我们这种clean的目标文件我们将它设置为伪目标,用.PHONY 修饰,伪目标的特性是总是被执行的。可以将我们的hello 目标文件声明成伪目标测试一下。 三、Linux第一个小程序进度条
3.1\r\n
回车概念换行概念老式打字机的例子
3.2行缓冲区概念
#include stdio.h
int main()
{printf(hello Makefile!\n);sleep(3);return 0;
}
3.3进度条代码
#include unistd.h
#include string.h
int main()
{int i 0;char bar[102];memset(bar, 0 ,sizeof(bar));const char *lable|/-\\;while(i 100 ){printf([%-100s][%d%%][%c]\r, bar, i, lable[i%4]);fflush(stdout);bar[i] #;usleep(10000);}printf(\n);return 0;
}