帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
『Linux从入门到精通』第 ⑪ 期 - Linux调试器——gdb使用详解
发布时间:2024-03-11 03:46:49   分类:帮助文档
『Linux从入门到精通』第 ⑪ 期 - Linux调试器——gdb使用详解 文章目录 💐专栏导读💐文章导读🌷准备工作🌷安装gdb调试器🌷如何进入调试?🌷调试相关指令 💐专栏导读 🌸作者简介:花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸专栏简介:本文收录于 C语言初阶专栏,本专栏主要内容为本专栏主要内容为Linux的系统性学习,专为小白打造的文章专栏。 🌸相关专栏推荐:C语言初阶系列、C语言进阶系列 、C++系列、数据结构与算法。 💐文章导读 在VS环境下,我们不仅可以写代码、编译、运行可执行程序,还可以对生成的可执行程序进行调试。调试的作用就不用强调了吧,相信大家都懂的~一个合格的程序员,调试的技能是必备的。本章我们就来学习如何在Linux环境下进行调试。 🌷准备工作 要进行调试,首先得生成一个可执行程序,所以首先准备一个简单的C程序: $ touch Test.c $ vim Test.c //C代码: #include int accumulate(int n) { printf("Start\n"); int sum = 0; for (int i = 0; i <= n; i++) { sum += i; } printf("End\n"); return sum; } int main() { int n = 100; int ret = accumulate(n); printf("%d\n", ret); return 0; } 回顾一下make/Makefile的使用: $ touch Makefile $ vim Makefile //Makefile的内容 Test:Test.c gcc Test.c -o Test -std=c99 .PHONE:clean clean: rm -f Test 🌺注意事项 此处的选项-std=c99的意义是:for循环中定义变量i的操作是c99才支持的,所以在编译时需要声明。否则,会出现如下报错: 🌷安装gdb调试器 在Linux中,我们使用gdb进行调试;切换root身份或使用sudo指令进行安装: $ yum install -y gdb 出现如下文字即代表安装成功: 🌷如何进入调试? 生成可执行文件(Test)后,通过指令gdb [文件名]进入调试。 $ gdb Test 🌺注意事项 若是直接对该Test文件进行调试,会出现无调试信息的报错,如下图: 原因是一个程序的发布方式有两种:release与debug。gcc/g++默认生成的可执行程序是release版本。而我们都知道,调试针对的是debug版的可执行程序,因为只有debug版才包含调试信息。在gcc/g++编译时,加上选项-g即可选择生成debug版的Test文件(为了区分,可在debug版的文件添加后缀-debug,release版添加后缀-release)。 修正Makefile文件: Test-debug:Test.c gcc Test.c -o Test-debug -g -std=c99 .PHONE:clean clean: rm -f Test 重新生成文件Test-debug,并进入调试。 $ make $ gdb Test-debug 🌷调试相关指令 🌼gdb [文件名] :进入调试;🌼Ctrl + d或quit:退出调试;🌼list + [行号]或l + [行号](简写形式):显示可执行程序的源代码。从行号出开始显示,一次显示10行。 (第一次使用该指令后,为了便捷可直接回车继续执行上一条指令。其它指令效果相同) 🌼list + [函数名] 或 l + [函数名] :显示某个函数的源代码; 🌼run 或 r :运行程序(若未设置断点则运行至程序结束); 🌼break + [行号] 或 b + [行号] :在某一行设置断点; 🌼info + b 查看断点信息; 🌼break + [函数名] :在某个函数开头设置断点; 🌼delete/d breakpoint n :删除编号为n的断点; 🌼delete/d breakpoint:删除所有断点; 🌼disable breakpoint:禁用断点; 🌼enable breakpoint:启用断点; 🌼next 或 n :单条语句执行; 🌼step 或 s :进入函数调用; 🌼finish:执行到当前函数返回,然后停下来等待命令; 🌼print 或 p:打印表达式的值,通过表达式可以修改变量的值或者调用函数; 🌼p + 变量:打印变量值; 🌼set + 变量:修改变量的值; 🌼continue 或 c:从当前位置开始运行直到下一个断点; 🌼display + 变量名:跟踪查看一个变量,每次停下来都显示它的值; 🌼undisplay:取消对先前设置的那些变量的跟踪; 🌼until + 行号:跳至某一行去执行; 🌼breaktrace 或 bt:查看各级函数调用及参数; 🌼info + 变量 + locals:查看当前栈帧局部变量的值; gdb常用的命令就总结到这里了。 🌺注意事项 学习gdb时,我们应该与VS环境下的调试进行对比更好理解,例如: r 相当于vs中的 F5;b 相当于vs中的 设置断点;n 相当于vs中的 F10;s 相当于vs中的 F11(在函数处);p/display 相当于vs中的 监视; … 🌺注意简写的使用 gdb中的指令一般都是可以简写的,例如: list——l;run——r;break——b;delete——d;breakpoint——b;next——n;step——s;print——p;continue——c;breaktrace——bt; … 点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价