目录
🟢程序的发布方式有两种,debug模式和release模式。
🟢Linux gcc/g++出来的二进制程序,默认是release模式,所以无法直接被调试!
🟢要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项。
🟢readelf - S 读取可执行程序的结构。
?
🕐?准备工作:为了操作简便,新创建一个 Makafile 文件。
涉及知识:make/Makefile
? ?功能💯:启动 gdb
功能💯:退出gdb
gdb 会记住最近的一条命令,如果命令无变化,可以直接回车。
功能💯:显示binFile源代码,接着上次的位置往下列,每次列10行。不加行号,默认从第10行开始显示代码。
功能💯:列出某个函数的源代码?
功能💯:开始调试,如果没有设置断点,直接运行结束。
功能💯:在某一行设置断点,但不会显示该行内容。
功能 💯:在某个函数开头设置断点
功能💯 :查看断点信息。
功能💯:删除断点。设置断点时,会给予一个断点编号。
功能💯:单条执行,逐过程,相当于vs里面的F10。
功能 💯:打印表达式的值,通过表达式可以修改变量的值或者调用函数。
功能💯:进入函数调用,逐语句,相当于vs里的F11。
功能💯:查看当前调用堆栈
功能💯:执行到当前函数返回,然后停下来等待命令
功能💯:跟踪查看一个变量,每次停下来都显示它的值。可以显示多个变量的值。
功能💯:取消 display 长显示。
功能💯:跳至指定行。
当我们观察一个循环时,不想一行一行的看,希望直接跳转到循环结果,而又不跳出这个函数。
功能💯:从当前位置开始连续而非单步执行程序?,运行到下一个断点处。
功能💯:使能(打开和关闭)断点
功能💯:修改变量的值?
学完这些指令,是不是感觉脑袋要爆炸了? 其实这些不是立即要全部掌握,可以在日常使用中不断加深印象,慢慢学会使用就可以了。但是一定要及时复习啊!!!