Linux编程基础——GDB(入门)
来源:互联网 发布:ps读取复合数据怎么办 编辑:程序博客网 时间:2024/04/30 11:41
调试是开发过程中一项不可或缺的工作,在Linux编程中,通常使用gdb来调试我们的c/c++程序
前期准备
在程序编译的时候,函数名、变量名会被相应的内存地址所代替,但这些内存地址对于我们来说是不可读的。我们往往需要需要根据函数名、变量名来查找实际的地址,从而读取其值。
为了方便调试,gcc增加了一个-g参数,在编译的时候可以在程序集中添加相应的符号信息。 -O0 表示编译过程中不进行任何优化,以避免程序执行过程中函数或者变量被优化掉。
gcc -g hello.c -o hello
启动GDB
启动GDB的方法有以下几种:
- gdb <program> 用gdb关联程序,可以通过run命令启动关联上的程序进程。
- gdb <program> core 用gdb调试core文件,core是程序非法执行后core dump后产生的文件。
- gdb <program> <PID>用gdb调试当前正在运行的进程,类似VS中的"附加到进程"方式的调试。
这些方式实际上也可以自由组合使用。例如,我们也可以先通过gdb <program>关联程序,然后通过attach <pid>的方式调试当前正在运行的进程。
GDB环境简介
首先介绍下GDB环境,GDB也是一个Shell式的交互环境,在GDB中,可以进程看到其提示符:(gdb)
(gdb) break
在gdb中,也想VS那样有一定的智能提示功能,具体如下:
- 输入命令时,可以不用打全命令,只用打命令的前几个字符就可以了。
- 当输入前几个字符后,可以通过Tab键自动补全
- 当前几个字符开头的命令较多时,Tab键无法补全,再次敲TAB键可以显示所有该字符开头的命令。
- 可以通过回车键重复执行命令(单步跟踪的时候常用)
- 可以通过上下键切换历史命令
例如,设置断点的命令是break,可以直接输入b;也可以输入b后敲两次Tab键以查询所有b开头的命令(只有一个的话可以直接补全):
(gdb) b
backtrace bookmark break break-range bt
这个智能提示也可以使用于在设置断点时候自动联想函数名称,例如,我们要对main函数设置断点,当输入b mai后敲Tab键,会自动补全为main
(gdb) b main
另外,也可以通过help <command>命令查看不熟悉的命令的帮助信息,类似于shell下的man,非常方便。
退出GDB
退出gdb的方式比较简单,直接在Shell下输入q(quit)命令就可以了:
(gdb) q
tianfang >
由于篇幅所限,本文暂且介绍到这里,下篇文章主要介绍如何设置断点。
- Linux编程基础——GDB(入门)
- Linux编程基础——GDB(入门)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB(设置断点)
- Linux编程基础——GDB设置断点
- Linux C编程2——编程基础vim和gdb
- linux入门基础(四)Gdb调试程序
- Linux技术——gdb调试基础
- Linux基础——GDB调试
- android app小白试水2-添加图片和文字滚动条
- IOS8中屏幕旋转问题解决
- E语言
- MFC改变static text颜色和内容及字体大小
- 【AllJoyn框架-07】Linux平台下用eclipse c++ 编译AllJoyn程序
- Linux编程基础——GDB(入门)
- C#发送http请求
- Hdu 2476 String painter(区间dp)
- ViewPager实现循环滑动功能说明
- 关于KVC与KVO的理解应用
- 关于透明代理mitmproxy和squit
- 安全相关文章地址
- Sublime Plugin - Python PEP8 Autoformat
- C语言编程(练习3:分支和跳转 )