我们在写代码的时候,有时候需要跟进程序的运行改正错误或者找到隐藏的错误,这叫调试
我们在vs等集成开发环境调试都很方便,比如按快捷键F5直接调试,F10逐过程调试--不进函数,F11逐语句调试--进函数,F9创建断点
在Linux下我们同样可以完成对代码的调试:使用gdb程序也是有版本的
Debug模式是开发模式,可被调试;Release模式是发布模式,不可被调试。
首先使用makefile生成一个debug文件:
这两种模式有什么区别?其中程序C编译时默认生成的是release版本,debug版本相对于release版本新增了调试信息。
可以看出debug的版本比release的版本所占内存大得多,也反向证明了debug相对于release版本增加了调试信息。
为什么会有这样的差异?是因为使用角色的不同。
用户使用程序和程序员使用程序是不一样的。用户是程序的使用者,他不需要知道如何调试,只要会执行就可以,多放调试信息还会占用空间,但程序员是开发者,必须知道调试信息来调试、来开发、来找到bug来修改bug。
查看debug版本下的调试信息
readelf -S processbar-debug
刷了好多页,这里只放一页展示
其中:
.rodata:只读区