wordpress棋牌江苏网站建设 seo
- 作者: 多梦笔记
- 时间: 2026年02月19日 00:31
当前位置: 首页 > news >正文
wordpress棋牌,江苏网站建设 seo,1688手工活外发加工网,长沙app开发#x1f525;系列文章#xff1a;《Linux入门》 目录
一、背景
二、什么是GDB
#x1f337;定义
#x1f337;GDB调试工具—提供的帮助 三、GDB的安装教程-Ubuntu
#x1f337;gdb的安装
四、哪类程序可被调试
#x1f337;程序的发布方式
#x1f337;Debug版…系列文章《Linux入门》 目录
一、背景
二、什么是GDB
定义
GDB调试工具—提供的帮助 三、GDB的安装教程-Ubuntu
gdb的安装
四、哪类程序可被调试
程序的发布方式
Debug版本、Release版本的区别
编译器的选择
五、调试指令
1启动程序
3检查程序状态
4单步执行
5继续执行
6修改程序
7查看源代码
8退出gdb 一、背景 GDB是Linux下的调试工具。 对于GDB调试器来说是采用纯命令行的形式进行调试。 所以大家又要开始对于指令的学习 本文中采用C语言编译器使用gcc 二、什么是GDB
定义
GDBGNU Debugger是GNU开源组织发布的一个强大的Linux下的程序调试工具。它主要用来调试C/C语言写的程序但也可以调试其他语言程序。 GDB提供了丰富的命令来实现相关功能如break设置断点、run启动程序、next单步执行、continue继续执行、print打印变量值等。此外GDB还支持条件断点、断点命令列表、监视点等高级功能满足开发者在调试过程中的各种需求。 GDB调试工具—提供的帮助 启动程序断点管理检查程序状态单步执行继续执行修改程序查看源代码反汇编多线程调试调试coredump文件 三、GDB的安装教程-Ubuntu
gdb的安装
sudo apt install gdb 四、哪类程序可被调试 要使用gdb调试必须使用release 版本。 程序的发布方式
只有两种 debug版本程序本身会被加入更多的调试信息以便于进行调试。release版本不会添加任何调试信息是不可调试的。 Debug版本、Release版本的区别
debug版本有调试信息文件大小更大release版本无调试信息文件更小
对于不同身份
对于程序员在编写代码后运行一般是使用【DeBug】环境进行运行。因为在企业里写软件项目将代码写完后程序员自己要做简单的测试。当程序员自己测试完没有问题之后就会将这个可执行程序给到测试人员进行测试而且会给出自己的单元测试报告。 对于测试人员所处的模式是【Release】也就是将来客户要使用的这款软件的发布版本。 当测试在测的过程中一定会发现一些问题。此时测试人员就会把报告再打回研发部。研发部做修改重新生成Release版本的可行性程序给到测试人员继续测试。最后只有当测试通过了再将生成的【单元测试报告】与产品经理进行核对之后没有问题那这个软件才可以真正地面向市场 编译器的选择
不同编译器生成一个可执行程序时默认发布版本是不同的。
在本文中使用的gcc编译器生成的可执行程序它是一个【Release】版本的因此无法进行调试。
如果想生成debug版本就需要在使用gcc/g生成可执行程序时加上-g选项。
如下利用 test.c 生成可执行程序mytest的release版本
gcc -o mytest test.c -g
五、调试指令
1启动程序
GDB可以按照自定义的要求启动程序例如设置参数、环境变量等。 在GDB中启动程序主要有两种方式使用run命令或者start命令。 run命令无断点直接运行、有断点从第一个断点处开始运行 这是最常用的启动程序的方式。在GDB中输入run或者简写为r后程序会开始执行。 如果程序中设置了断点那么程序会执行到第一个断点处暂停 如果没有设置断点程序会一直执行到结束。此外run命令也可以带参数这些参数会被传递给被调试的程序。 start命令 与run命令不同start命令会执行程序至main()主函数的起始位置即在main()函数的第一行语句处停止执行该行代码尚未执行。 可以理解为使用start命令启动程序完全等价于先在main()主函数起始位置设置一个断点然后再使用run命令启动程序。 2断点管理
GDB中的断点管理是一项关键功能允许开发者在特定位置暂停程序执行以进行检查。以下是关于断点管理的一些常用操作和说明
设置断点 使用break或b命令可以在源代码的特定行或函数上设置断点。例如break filename:linenum在filename文件的linenum行设置断点而break function_name在给定的function_name函数处设置断点。也可以通过条件表达式来设置断点格式如break location if condition其中location可以是行号、函数名等condition是一个条件表达式。只有当该条件为真时断点才会生效。查看断点 可以通过info breakpoints命令查看所有设置的断点包括断点的位置、是否启用、类型、条件和命中次数等信息。删除断点 使用delete或d命令后接断点编号可以删除特定的断点例如delete 1删除编号为1的断点。要删除所有断点可以使用delete命令而不带任何参数。禁用和启用断点 可以使用disable和enable命令后接断点编号来禁用或启用特定的断点。例如disable 2将禁用编号为2的断点而enable 2将重新启用它。断点的持久性 在GDB中设置的断点默认情况下是非持久的也就是说当你退出GDB并重新启动程序时这些断点将不再存在。然而有些GDB版本和前端可能提供了保存和恢复断点的功能使断点具有持久性。这通常涉及将断点信息保存到一个文件中并在启动GDB时加载该文件。临时断点 除了普通断点外GDB还支持所谓的“临时断点”也称为“一次性断点”。这种类型的断点在程序到达其位置后会自动删除因此只会命中一次。这可以通过特定的GDB命令或前端界面来实现。
3检查程序状态
当程序被暂停时GDB可以查看程序中的变量值、内存内容、函数调用栈等信息帮助开发者了解程序当前的状态。 在GDB中当程序被暂停时你可以检查程序的状态这包括查看变量的值、内存内容、寄存器的内容以及当前的函数调用栈等信息。
查看变量值使用print命令或简写为p可以查看变量的值。例如print var_name会显示变量var_name的当前值。你也可以使用print命令进行一些复杂的表达式计算如print var1 var2。查看内存内容x命令可以用来检查内存的内容。你可以指定要查看的内存地址和格式。例如x/16xb address会以16进制格式显示从address开始的16个字节的内容。查看寄存器内容你可以使用info registers命令查看当前所有寄存器的值。如果你只想查看某个特定的寄存器可以使用print命令如print $eax。查看函数调用栈使用backtrace命令或简写为bt可以查看当前的函数调用栈。这会列出从主函数到当前函数的所有函数调用以及每个函数的参数值。你还可以使用frame命令切换到调用栈中的某个特定函数帧。查看源代码GDB还可以显示当前执行的源代码行。使用list命令或简写为l可以查看当前的源代码并允许你在源代码中设置断点或查看变量值。
4单步执行
GDB支持逐条执行程序中的指令方便开发者逐步跟踪程序的执行过程。 在GDB中单步执行是一种重要的调试手段它允许开发者逐条执行程序中的指令以便仔细观察程序的行为。GDB提供了几种不同的单步执行命令以满足不同的调试需求。
next (或 n): 使用next命令可以执行程序中的下一行代码。如果当前行是一个函数调用next命令会执行整个函数然后在函数返回后暂停。简而言之next命令步进到下一行代码但不进入函数内部。step (或 s): 与next不同step命令在执行下一行代码时如果遇到函数调用会进入函数内部并逐条执行函数内的指令。使用step命令可以深入函数内部进行调试。finish: 当已经步入一个函数内部并希望快速执行完剩余部分时可以使用finish命令。它会继续执行程序直到从当前函数中返回。这个命令在已经了解函数内部行为只想快速跳到函数完成后的状态时非常有用。continue (或 c): 虽然不是传统意义上的单步执行命令但continue命令在调试过程中也很有用。它会继续执行程序直到遇到下一个断点或程序结束。在设置了断点后使用continue可以让程序快速运行到下一个关注点。until: until命令用于在循环体内单步执行直到退出循环。如果当前行不在循环体内则等同于next命令。这个命令在调试循环结构时特别有用可以避免手动步进整个循环。advance: advance命令可以指定向前执行到程序的某个位置这个位置可以是源代码行号、函数名或某个特定的地址。不过请注意并非所有GDB版本都支持此命令。
5继续执行
GDB可以在暂停后继续执行程序直到遇到下一个断点或程序结束。 在GDB中继续执行被调试的程序是一个常见的操作尤其是在设置了断点或进行了单步执行之后。以下是关于如何在GDB中继续执行程序的信息
continue命令或简写为c 这个命令用于继续执行被调试的程序。在程序暂停后例如由于遇到了断点或执行了单步调试命令你可以使用continue命令恢复程序的执行。程序将继续运行直到遇到下一个断点、接收到一个信号或者程序正常结束。示例
(gdb) continue 或者简写为
(gdb) c
如果希望程序继续执行并跳过一定数量的断点可以在continue命令后加上一个数字表示希望跳过的断点次数包括当前这一次。例如
(gdb) continue 5 上述命令将使程序继续执行并跳过接下来的5个断点但请注意这种用法可能不是GDB的标准功能标准的GDB通常只支持不带参数的continue命令。
然而在实际使用中GDB通常只会继续执行到下一个断点或程序结束而不支持跳过指定数量的断点。如果需要跳过某些断点可以考虑临时禁用或删除这些断点。 总的来说在GDB中使用continue命令是继续执行被调试程序的标准方式。在执行该命令之前请确保已经设置了适当的断点或其他停止条件以防止程序无限制地运行下去。
6修改程序
GDB允许在调试过程中修改程序中的变量值或内存内容这对于测试某些特定条件非常有用。 在GDB中修改程序通常指的是在调试过程中动态地改变变量的值或内存区域的内容。这种能力对于测试和调试非常有用尤其是在需要模拟特定条件或绕过错误时。 以下是在GDB中修改程序的一些方法
设置变量值 使用set命令可以修改变量的值。例如set variable_name new_value会将variable_name的值更改为new_value。这适用于全局变量和局部静态变量。对于非静态局部变量你可能需要在正确的栈帧中操作。 set variable_name new_value 调用函数 在GDB中你可以使用call命令调用函数这可能会改变程序的状态。例如call function_name(arguments)会调用function_name并传递arguments。调用函数可能会影响程序的行为因此在使用时需要谨慎。 call function_name(arguments) 跳转执行 尽管不常推荐但在某些情况下你可能想要改变程序的执行流程。使用jump命令如果GDB支持的话可以跳转到程序的另一个位置执行。然而这可能会破坏程序的正常执行流程因此应该非常小心地使用。
7查看源代码
GDB可以显示当前执行的源代码行并允许开发者在源代码中设置断点或查看变量值。 以下是在GDB中查看源代码的几种方法
使用list命令 GDB的list命令或简写为l可以用来显示当前行的源代码以及周围的代码。你可以指定要显示的行号或函数名。例如list function_name将显示名为function_name的函数的源代码而list linenum将显示指定行号linenum周围的代码。如果不带任何参数list命令通常会显示当前执行点周围的代码。
8退出gdb 输入 quit 或者 快捷键 ctrl d 参考文章
http://t.csdnimg.cn/tVKIf
全网最全GDB调试整理 - 小白编程开发 - 博客园 (cnblogs.com)
- 上一篇: WordPress瀑布流图片站免费行业网站源码
- 下一篇: wordpress企业建站专门查大学的网站
相关文章
-
WordPress瀑布流图片站免费行业网站源码
WordPress瀑布流图片站免费行业网站源码
- 站长
- 2026年02月19日
-
wordpress评论要审核吗上海seo网络推广公司
wordpress评论要审核吗上海seo网络推广公司
- 站长
- 2026年02月19日
-
wordpress评论cdn刷新谷歌seo网站推广怎么做优化
wordpress评论cdn刷新谷歌seo网站推广怎么做优化
- 站长
- 2026年02月19日
-
wordpress企业建站专门查大学的网站
wordpress企业建站专门查大学的网站
- 站长
- 2026年02月19日
-
wordpress企业网站cmswordpress新建页面显示数据库
wordpress企业网站cmswordpress新建页面显示数据库
- 站长
- 2026年02月19日
-
wordpress企业站模板宣传片拍摄应急预案
wordpress企业站模板宣传片拍摄应急预案
- 站长
- 2026年02月19日
