Linux下GDB调试C++代码
2015-12-08 09:44
549 查看
浏览:149
|
更新:2015-05-27 15:28
|
标签:linux
1
2
3
4
5
6
7
分步阅读
百度经验:jingyan.baidu.com
Linux环境在跨平台中编程中被大家广泛使用,大家可以在Linux上做一些Windows上的C++的代码的编程,但是由于环境不相同,所以代码的调试可能存在很大的区别,下面讲下Linux下的gdb工具调试C++代码的一些步骤。
百度经验:jingyan.baidu.com
百度经验:jingyan.baidu.com
首先,先去创建一个简单的C++代码。实现的功能很简单。就是初始化一个变量num=1,然后在做一个num+=2的操作。
步骤阅读
2
编写好代码后,我们需要生成一个可执行文件去运行程序。
g++ -g test.cpp -o main
如上指令,我们通过g++去编译test.cpp,并生成可执行文件main
步骤阅读
3
然后我可以运行一下代码看下结果:
步骤阅读
4
接着进行代码的调试,在命令行输入gdb,然后进入了gdb的环境下。
步骤阅读
5
然后输入file main
这样我们就告诉gdb我们要调试main工程
步骤阅读
6
然后我们输入l,就可以罗列出当前代码的信息
步骤阅读
7
我们看到了main函数,然后通过输入b main在main函数入口处加一个断点
步骤阅读
8
ok,加下来输入r,我们开始运行代码,然后代码就停止到设置的断点处
步骤阅读
9
然后我们看到了print函数,然后输入s,单步进入函数体
步骤阅读
10
然后我们可以输入n,进行单步的调试
步骤阅读
11
我们会看到一个变量num的值,然后我们输入print num,参看变量值
步骤阅读
12
然后n单步调试后,这时候程序进行了num+=2的操作,我们通过print num可以参看变量值发生了变化
步骤阅读
13
然后我们需要看的已经结束了,那么输入c,程序继续执行,由于没有设置其他断点,这时候程序运行结束,并且输出一些信息。
步骤阅读
14
OK,这样我们的整个调试就结束了。
END
百度经验:jingyan.baidu.com
1、file <文件名>
加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。
示例:(gdb) file gdb-sample
2、r
Run的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。
示例:(gdb) r
3、c
Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。
示例:(gdb) c
4、b <行号>
b <函数名称>
b *<函数名称>
b *<代码地址>
b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。
其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。
5、set args [parameter]
gdb调试的时候,设置命令行参数。
6、bt
bt可以去查看堆栈信息。down和up和一个一个打印堆栈信息。bt直接打印全部堆栈信息。
7、n
单步调试
8、s
单步进入
END
百度经验:jingyan.baidu.com
地址:http://jingyan.baidu.com/article/acf728fd464984f8e410a369.html
Linux下GDB调试C++代码
|浏览:149
|
更新:2015-05-27 15:28
|
标签:linux
1
2
3
4
5
6
7
分步阅读
百度经验:jingyan.baidu.com
Linux环境在跨平台中编程中被大家广泛使用,大家可以在Linux上做一些Windows上的C++的代码的编程,但是由于环境不相同,所以代码的调试可能存在很大的区别,下面讲下Linux下的gdb工具调试C++代码的一些步骤。
百度经验:jingyan.baidu.com
工具/原料
Centos6.4版本环境百度经验:jingyan.baidu.com
方法/步骤
1首先,先去创建一个简单的C++代码。实现的功能很简单。就是初始化一个变量num=1,然后在做一个num+=2的操作。
步骤阅读
2
编写好代码后,我们需要生成一个可执行文件去运行程序。
g++ -g test.cpp -o main
如上指令,我们通过g++去编译test.cpp,并生成可执行文件main
步骤阅读
3
然后我可以运行一下代码看下结果:
步骤阅读
4
接着进行代码的调试,在命令行输入gdb,然后进入了gdb的环境下。
步骤阅读
5
然后输入file main
这样我们就告诉gdb我们要调试main工程
步骤阅读
6
然后我们输入l,就可以罗列出当前代码的信息
步骤阅读
7
我们看到了main函数,然后通过输入b main在main函数入口处加一个断点
步骤阅读
8
ok,加下来输入r,我们开始运行代码,然后代码就停止到设置的断点处
步骤阅读
9
然后我们看到了print函数,然后输入s,单步进入函数体
步骤阅读
10
然后我们可以输入n,进行单步的调试
步骤阅读
11
我们会看到一个变量num的值,然后我们输入print num,参看变量值
步骤阅读
12
然后n单步调试后,这时候程序进行了num+=2的操作,我们通过print num可以参看变量值发生了变化
步骤阅读
13
然后我们需要看的已经结束了,那么输入c,程序继续执行,由于没有设置其他断点,这时候程序运行结束,并且输出一些信息。
步骤阅读
14
OK,这样我们的整个调试就结束了。
END
百度经验:jingyan.baidu.com
一些调试指令
11、file <文件名>
加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。
示例:(gdb) file gdb-sample
2、r
Run的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。
示例:(gdb) r
3、c
Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。
示例:(gdb) c
4、b <行号>
b <函数名称>
b *<函数名称>
b *<代码地址>
b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。
其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。
5、set args [parameter]
gdb调试的时候,设置命令行参数。
6、bt
bt可以去查看堆栈信息。down和up和一个一个打印堆栈信息。bt直接打印全部堆栈信息。
7、n
单步调试
8、s
单步进入
END
百度经验:jingyan.baidu.com
注意事项
调试的时候一定要注意断点的设置,否则就没有意义相关文章推荐
- linux 磁盘df 100% 查找大文件
- linux安装mysql
- centos mysql-5.6.22 主从复制
- Centos配置国内yum源
- 在Mac、Linux 终端显示 Git 当前所在分支
- OpenStack - liberty CentOS 7
- 如何获得Linux系统的内置模块和设备驱动列表
- Linux之旅——Linux简介
- centos 安装VNC_seerver
- 每天一个Linux命令(3):pwd命令
- Linux下top订购具体解释
- 最牛技术 1秒启动Linux的窍门
- UNIX环境编程--------原始套接字学习笔记-----Linux原始套接字实现分析
- 要做linux运维工程师的朋友,必须要掌握以下几个工具才行 ...
- Linux学习(一):从图形界面进入命令行及命令行进入图形界面
- linux SVN服务器创建版本库
- 1 秒内启动Linux的方法
- Linux系统下使用XHProf和XHGui分析PHP运行性能
- [转载]CentOS挂载新硬盘
- linux技术博客文章