镇江网站排名优化,网站建设运营服务商,seo方案,采集网站如何收录文章目录一、gdb简介二、gdb的安装三、gdb使用3.1、release和debug版本3.2、gdb基本使用命令1、启动gdb2、调试命令3、显示代码#xff08;list#xff09;4、断点命令#xff08;breakpoint#xff09;5 、变量命令#xff08;variable#xff09;6、特殊调试命令7、调用…
文章目录一、gdb简介二、gdb的安装三、gdb使用3.1、release和debug版本3.2、gdb基本使用命令1、启动gdb2、调试命令3、显示代码list4、断点命令breakpoint5 、变量命令variable6、特殊调试命令7、调用堆栈命令8、显示当前函数内临时变量info locals一、gdb简介
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c程序员gdb是必不可少的工具
二、gdb的安装
sudo yum install -y gdb三、gdb使用
3.1、release和debug版本
在进行程序开发的过程中有两个版本一个是release版本一个是debug版本。我们都知道如果要进行调试程序这个程序必须的debug版本的我们才可以进行调试的。
在Linux中查看程序版本
readelf -S test这里我们可以发现并没有关于debug的信息。其实在Linux中gcc/g编译器默认生成的版本是release版本的如果想进入debug版本我们就要带-g选项
gcc mytest.c -o mytest -g总结
程序的发布方式有两种debug模式和release模式Linux中gcc/g编译器默认生成的可执行程序是release模式要使用gdb调试必须加上 -g 选项
3.2、gdb基本使用命令
1、启动gdb
gdb 可执行程序文件如下
gdb mytest_g
gdb -q mytest_g //表示不打印gdb版本信息界面较为干净2、调试命令
与vs中的调试命令进行对比 gdb中
名称命令解释开始运行run(r)相当于开始调试F5执行代码后会在断点处停下逐语句step(s)相当于F11有函数会进入函数内部逐过程next(n)相当于F10不会进入函数内部执行整条语句像逐过程、逐语句这样的命令一次输入之后可直接回车仍会再次执行。 vs2019中 运行演示 直接调试 逐过程 逐语句
3、显示代码list
名称命令解释可指定行号list(l) [N]从第 N 行开始显示 10 行代码可接着上次的位置继续打印可指定函数名list(l) Name从函数起始位置左右开始显示代码4、断点命令breakpoint
名称命令解释某行打断点b N在某行打上断点函数打断点b FuncName在函数内起始位置打断点查看断点info b显示断点信息列表删除断点d N删除序号为 N 的断点省略序号就是删除所有断点启用断点enable N 启用序号为 N 的断点省略序号就是启用所有断点禁用断点disable N禁用序号为 N 的断点省略序号就是禁用所有断点5 、变量命令variable
名称命令解释监视变量display ValName以列表的形式常显示在屏幕下方类似于vs中的监视取消监视undisplay N去掉监视列表中的序号为 N 的变量的常显示查看变量p Name打印变量的值不会常显示修改变量set Name设置指定变量的值6、特殊调试命令
名称命令解释结束当前函数finishfinish 会直接结束当前函数的调用并停止在函数返回位置继续运行continue(c)continue 继续运行至下一个断点相当于F5运行至指定行until N运行至当前函数内部的第 N 行7、调用堆栈命令
名称命令解释调用堆栈breaktrace/bt查看程序各级栈帧的调用情况8、显示当前函数内临时变量info locals
名称命令解释显示当前函数内临时变量info locals显示当前函数内临时变量