【Linux】环境基础开发工具使用
一. 关于rzsz
这个工具是用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件的,安装完毕之后可以通过拖拽的方式将我呢见上传过去,但是我一般是用 xfit 来进行传输文件。
二. Linux编译器-gcc/g++使用
2.1 快速认识一下
gcc code.c -o mybin
三、gdb调试工具的使用
说起调试,我们就需要了解一下发布软件一般有两种方式:debug(可以被调试)和release(不可以被调试)。
最近,小编刚好也在实习。一般来说,一个企业在开发一个项目的时候,一般有以下几个步骤:立项,搭建团队&&排期计划,环境预准备&&流程说明。小编现在所做的任务就是写代码,自测,然后发布版本,给用户的版本是release版本的。
debug和release的区别:
- debug形成的可执行程序会给我们添加了调试信息,内存大
- release形成的可执行程序会给我们去掉调试信息,内存小
gcc/g++编译时是什么模式呢??
- gcc/g++是release模式。
- gcc的默认行为:
- 默认是动态链接
- 默认是release发布
如何让gcc/g++以debug发布??
mytest:test.c:gcc -o $@ $^ -g
可执行程序也是有自己的格式:ELF
readelf -S mytest-d | grep -i debug
3.1 windows基本的调试功能
- 运行起来才能调试
- 我们也要看到代码
- 打断点
- 局部调试
- 看到局部变量的内容和地址
- 看到调用栈
- 单步
- 进入函数
- 逐语句/逐过程
3.2 gdb调试
3.2.1 背景
- Linux gcc/g++出来的二进制程序,默认是release模式
- 要使用gdb调试,必须在源代码生成二进制程序的时候加上 -g 选项
3.2.2 开始使用
gdb binFile 退出:ctrl + d 或者 quit 调试命令
- list/l 行号:显示 binFile 源代码,接着上次的位置往下显示,每次显示10行
- list/l 函数名:列出某个函数的源代码
- r/run:运行程序
- n/next:单条执行(逐过程)
- s/step:进入函数调用(逐语句)
- break(b)行号:在某一行设置断点
- break 函数名:在某一个函数开头设置断点
- info break:查看断点信息
- finish:执行到当前函数返回,然后停下来等待命令
- print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
- p 变量名:打印变量的值
- display 变量名:跟踪查看一个变量,每次停下来都显示他的值
- undisplay 变量名:取消对先前设置的那些变量的跟踪
- set var 变量名:修改变量的值
- continue(或c):从当前位置开始连续而非单步执行程序
- delete breakpoints:删除所有断点
- delete breakpoints n:删除序号为n的断点
- disable breakpoints:禁用断点
- enable breakpoints:启用断点
- breaktrace(或bt):查看各级函数的调用即参数
3.3 调试究竟在干什么
如果我们拿到一份代码,不懂代码的逻辑,调试是比较困难的!!!下面是调试的两个步骤:
- 找到问题(查找,范围查找,局部逐行查找)
- 解决问题(上下文代码)