赞
踩
目录
在之前的学习中,我们已经能够用vim编写和gcc/g++编译代码了,下面来学习如何调试代码。
在Linux系统中,GDB(GNU Debugger)是一个强大的、灵活的、开源的调试工具,用于对程序进行调试。它允许开发人员在程序崩溃或者运行出错时检查程序的内部状态,跟踪代码的执行过程,并尝试找出程序中的错误。
gdb是 GDB 命令行工具的缩写形式,可以在终端中使用该命令启动 GDB 调试器。
我们在编写代码时总会有各种各样的错误,这些错误基本可以分为两类:
虽然我们有各种各样的IDE,但是对于从事 Linux C/C++ 开发的程序员来说,大多数都需要熟悉gdb调试工具。尤其当不具备IDE的环境时(嵌入式系统等资源限制的场景),gdb以其占用资源少、开源免费和方便实用的优势被广泛使用。
在Linux下调试代码分为两步:
确定问题、分析缩小范围、找到问题所在、提出解决方案。这种调试代码的思路都是一样的,所以调试代码侧重点在于把调试思路用在gdb这个调试工具上
sudo yum install -y gdb
gdb --version
程序的发布方式有两种,debug模式和release模式,debug模式可以被调试,release版本用于测试和发布。
原因:测试人员要测试的代码,必须是用户最终用的,debug版本有很多调试信息,这些信息用户不需要而且也会使软件资源占用较大。release版本的代码都是用户需要的。
使用 gdb <可执行程序名> 即可进入调试模式,
但要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,否则报错。
Linux gcc/g++出来的二进制程序,默认是release模式。
证明:1.在debug发布的时候,一定要给可执行程序内部添加debug信息,否则无法调试!
2.release文件更小
我们在Linux中形成的可执行程序格式:ELF格式 ,包含很多可执行程序的信息,如代码开始和结束的位置,用以下命令读取。
readelf -S <可执行程序名> -g | grep -i debug
-S 读取二进制文件构成, -i 忽略大小写
执行readelf -S <可执行程序名> -r | grep -i debug 不会显示信息,因为没有release版本没有调试信息。
结论:如果你想让你的程序被调试,必须加 -g 以debug方式发布!
使用 gdb <可执行程序名> 即可进入调试模式,q 退出
常用的 gdb 命令:
注:
以上所讲都是常用命令,希望大家能够熟练使用,也希望大家能在网上搜索和学习gdb的其他使用方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。