gcc作为GNU开源的C编译工具,自带优化功能。可以针对当前代码进行一定程度的优化,在保证程序正确运行的基础之上,减少系统资源的占用。"-On"选项就是进行代码编译优化的!n是等级项,一般默认的是1,也即是“-O1”(一般直接写作“-O”)。
"-On"选项中n的数值越大,优化的等级越高,同时也就意味着程序的运行速度越快。一般常用的等级是-O2.
而gdb是gcc的调试工具,主要用于C/C++这两种语言编写的程序。使用命令行的形式,实现在VC等可视化IDE中的调试功能。
使用任何一个调试选项都会使得最终生成的二进制文件的大小急剧增加,同时增加程序在执行时候的开销,因此调试选项仅在软件的开发和调试阶段使用。
gdb常用的命令:
gdb filename 进入调试环境
run 启动调试
kill 关闭调试
step 单步调试,可以进入函数内部
next 单步调试
break 设置断点
print 打印当前程序的运行时变量值(例:print name)
display 自动显示,每next/step一次,显示的数据内容。通过这个命令指定自动显示
list 显示源代码 ,默认显示10行
quit 退出调试环境
backtrace 显示函数堆栈
jump 跳转
signal 产生信号量
强制调用函数 call
强制函数返回 return
1)display自动显示命令:
delete display 删除自动显示
undisplay 删除自动显示
disable display 暂时使得display的内容失效
enable display 使得失效的内容重新生效
info display 显示要自动显示的内容
2)查看源程序 list
list <linenum>
list <function>
list <first> ,<last>
list 显示当前行后面的源程序,默认10行(set listsize 修改显示行数)
3)查看源代码内存 info
disassemble 反汇编命令
4)改变程序的执行
1.修改变量的值 print x=8;
2.跳转执行 jump <linespace> jump <address>
视频链接:https://www.bilibili.com/video/av41567530?p=2