电商网站开发经验,房地产销售现状,珠海住建网站,深圳营销型网站建设电话目录 00.背景
01.安装
02.生成调试信息
03.调试过程 00.背景
在软件开发中#xff0c;通常会为程序构建两种不同的版本#xff1a;Debug模式和Release模式。它们之间的区别主要在于优化级别、调试信息、错误检查等方面#xff1a;
1.Debug 模式#xff1a;
优化级别低…目录 00.背景
01.安装
02.生成调试信息
03.调试过程 00.背景
在软件开发中通常会为程序构建两种不同的版本Debug模式和Release模式。它们之间的区别主要在于优化级别、调试信息、错误检查等方面
1.Debug 模式
优化级别低Debug 模式通常会关闭或者减少优化这样可以使得生成的可执行文件更易于调试因为优化通常会使得代码执行流程更难以跟踪。包含调试信息在 Debug 模式下编译器会保留更多的调试信息例如变量名称、源代码行号等这些信息有助于在调试过程中定位和解决问题。开启错误检查Debug 模式通常会启用额外的错误检查和断言这有助于在开发阶段及早发现程序中的错误。
2.Release 模式
高度优化Release 模式会应用更多的优化以提高程序的运行性能和执行速度。这些优化可能包括代码内联、循环展开、函数内联等使得程序更高效地运行。剔除调试信息为了减小可执行文件的大小并提高程序运行效率Release 模式通常会删除或者减少调试信息的存储因此无法直接使用调试器进行源代码级别的调试。关闭错误检查为了提高性能Release 模式通常会关闭或者减少额外的错误检查和断言。
总结
Debug模式适用于开发阶段面向开发者可以方便开发者进行调试和定位问题而Release模式则适用于发布阶段面向用户可以获得更高的性能和更小的可执行文件大小但同时也失去了一些调试能力。因此在进行软件开发时通常会现在Debug模式喜爱进行开发和调试然后切换到Release模式进行测试和发布。
下面讲到的gdb调试器就是在Debug模式下运行的。
01.安装
GDB程序是GNU项目的一部分全称是GNU Debugger。它是一个用于调试C、C等编程语言的程序的强大工具。我们需要安装GDB才能在系统上使用它。
1.包管理器
在Ubuntu上可以使用以下命令安装
sudo apt-get install gdb在CentOS上可以使用以下命令安装
sudo yum install gdb
2.源代码编译
想安装最新版的GDB可以从GDB官网下载源代码编译安装https://www.gnu.org/software/gdb/
02.生成调试信息
想要使用gdb对程序进行调试首先要生成该程序对于的调试信息gdb在加载程序时需要找到调试符号才能进行调试。通过以下命令生成调试信息
gcc -g source.c -o a.out
这会编译‘source.c’并生成一个包含调试信息的可执行文件‘a.out’使得可以在gdb中进行源代码级别的调试。
使用以下指令进入调试界面
gdb a.out 如果编译程序时没有使用选项“-g”就不会生成调试信息此时输入调试指令就会报错 提示你gdb加载程序时没有找到调试符号
03.调试过程
具体调试时需要用到许多指令这里列出来供大家参考 list 或 l 行号显示源代码接着上次的位置往下列每次列10行。list 或 l 函数名列出某个函数的源代码。run 或 r运行程序。next 或 n单条执行。step 或 s进入函数调用。break或 b行号在某一行设置断点。break 函数名在某个函数开头设置断点。info breakpoints查看断点信息。finish执行到当前函数返回然后挺下来等待命令。print或 p打印表达式的值通过表达式可以修改变量的值或者调用函数。print或 p 变量打印变量值。set var修改变量的值。continue或 c从当前位置开始连续而非单步执行程序。delete breakpoints删除所有断点。delete breakpoints n删除序号为 n 的断点。disable breakpoints禁用断点。enable breakpoints启用断点。display 变量名跟踪查看一个变量每次停下来都显示它的值。undisplay取消对先前设置的那些变量的跟踪。until X行号跳至 X 行。breaktrace或 bt查看各级函数调用及参数。info或 i locals查看当前栈帧局部变量的值。quit退出 GDB。 显示源代码
输入“list 或 l 行号”指令终端会以“行号”居中的布局显示源代码 通常情况下我们习惯输入“l 0”或“l”来查看全部代码但只会显示10行代码这该如何呢我们只需要继续按‘回车’键直到显示出全部代码 最后会提示总共有几行代码
断点
输入“run 或 r”指令即可运行代码当程序报错时我们可能需要打入断点来筛查错误代码处
此时可以使用“break或 b行号”指令在某一行设置断点并使用“info breakpoints或b”查看断点信息 注意这里我们设置的断点行号和实际生成的断点行号不一致是因为在打入断点时gdb会跳过头文件、符号{}、空格、函数名等
gdb中断点是有序号的从1开始排序当我们想删除断点时就可以使用“delete breakpoints n”或“d n”指令n就是断点的序号
我们输入“r”程序执行到断点处时可以使用“comtinue或c”命令让程序继续执行如果后面还有断点就会执行到下一个断点处如果没有断点就会执行完整个程序。 跟踪变量
在 gdb 中可以使用“print或 p变量”查看变量的值但是面对一个实时变化的变量时每执行一步就要输入“p”指令查看一次显然太麻烦可以像vs编译器那样设置一个监视窗口实时查看变量值吗
我们可以使用 display 命令或者disp来设置跟踪某个变量的值并在每次程序执行时显示该变量的值。这样在执行程序时你可以同时查看变量的值并继续执行程序。
和断点一样也可以通过“info disp”指令来查看跟踪的变量它们也都有从1开始的编号。 注意设置跟踪变量必须保证程序处于运行状态
此时我们执行程序时就会同时显示变量 以上就是调试器gdb的基本使用说明~