前言:
目前朋友们对“ubuntu怎么退出gdb”都比较注意,各位老铁们都需要学习一些“ubuntu怎么退出gdb”的相关资讯。那么小编在网络上收集了一些对于“ubuntu怎么退出gdb””的相关文章,希望大家能喜欢,我们一起来了解一下吧!最近公司来了几个实习生,给他们培训时发现他们大部分没用过或不了解GDB,给他们培训之余做了这个总结,跟大家共享一下.
GDB简介
没有调试器的情况下编写程序时最糟糕的状况是什么?编译时跪着祈祷不要出错?或者在每一行代码间添加printf("test")语句来定位错误点?如你所知,编写程序时不使用调试器的话是不方便的。幸好,linux下调试还是很方便的。大多数人使用的IDE都集成了调试器,但 linux 最著名的调试器是命令行形式的C/C++调试器GDB。然而,与其他命令行工具一致,DGB需要一定的练习才能完全掌握。这里,我们一起学习GDB的基本情况及使用方法。
GDB 安装
Debian 或 Ubuntu
1. $ sudo apt-get install gdb
Arch Linux
1. $ sudo pacman -S gdb
Fedora,CentOS 或 RHEL:
1. $sudo yum install gdb
如果在仓库中找不到的话,可以从官网中下载。
示例代码GDB简单使用
首先最重要的,你需要使用编译器的 “-g“选项来编译程序,这样可执行程序才能通过GDB来运行。
通过下列语句开始调试:
1.交互式窗:
gdb -tui [可执行程序名]
使用”-tui“选项可以将代码显示在一个漂亮的交互式窗口内(所以被称为“文本用户界面 TUI”),在这个窗口内可以使用光标来操控,同时在下面的GDB shell中输入命令。
2.忘记命令
比如只记得是b开头命令,敲入b按两次TAB键,你会看到所有b打头的命令:
(gdb) b backtrace break bt
不记得命令了:
-h --列出所有命令类
-help <classname> --列出该类下的所有命令
3.设置断点:
行断点:break [行号] 函数断点:break [函数名] 条件断点:break[行号] if [条件]
当for循环50次时程序停留在a++上,这样我们就可以避免手动执行50次.
tip1
只记得函数的前缀,可以这样:列出所有make_开头的函数
(gdb) b make_ <按TAB键>
tip2
调试C++的程序时,有可以函数名一样。如:
(gdb) b 'bubble( M-?
bubble(double,double) bubble(int,int)
(gdb) b 'bubble(
你可以查看到C++中的所有的重载函数及参数。(注:M-?和“按两次TAB键”是一个意思)
4.查看断点信息
info break
5.观察断点:
watch [变量]
我们可以设置一个“观察断点”,当这个被观察的变量发生变化时,程序会被停止。
先在第7行设置断点,r运行程序,watch c观察变量c(注意一定要在程序运行后才能watch变量),continue继续执行 会停在变量c值变化的下一行:
打印变量c的值发现已经变化
6.显示变量值:
p [变量]
7.显示所有的局部变量:
info local
8.显示变量的类型:
ptype [变量]
9.单步调试:
step:缩写s
单步调试可以进入函数体
10.运行下一条语句:
next
程序继续执行:
continue:缩写c
执行到程序结束.
11.回溯功能:
bt
回溯功能(backtrace)可以让我们知道程序如何到达这条语句的(这里程序比较简单体现不明显), 查看函数堆栈
12.删除断点:
测试结束,删除断点:
delete [断点号]
13.退出gdb
quit:简写q
下篇文章中我们会做一些GDB进阶阶段的学习,欢迎关注。
标签: #ubuntu怎么退出gdb