gdb是什么意思(GDP的真正含义)
最近,该公司带来了几名实习生,当他们接受培训时,他们发现大多数人从未使用过GDB或不知道GDB。经过培训,我做了这个总结,分享给大家。
GDB简介
不用调试器写程序最糟糕的情况是什么?编译时跪求不出错?或者在每行代码之间添加一个printf(“test”)语句来定位错误点?如你所知,不使用调试器写程序是不方便的。好在linux下调试很方便。大多数人使用集成调试器的IDE,但linux最著名的调试器是命令行形式的C/C++调试器GDB。然而,像其他命令行工具一样,DGB需要一些练习才能完全掌握它。在这里,让我们一起来学习GDB的基本情况和用法。
GDB 安装
Debian还是Ubuntu
1.$ sudo apt-get安装gdbArch Linux
1.$ sudo pacman-s gdb fedora、centos或RHEL:
1.$sudo yum install gdb如果在仓库里找不到可以从官网下载。
示例代码
GDB简单使用
首先,您需要使用编译器的“-g”选项来编译程序,以便可执行程序可以通过GDB运行。
使用以下语句开始调试:
1.交互式窗口:
gdb -tui [可执行程序名]
GD b-tui[可执行程序名]
使用“-TUI”选项在一个漂亮的交互式窗口中显示代码(所谓的“文本用户界面TUI”)。在这个窗口中,你可以用光标来操纵,同时在下面的GDB外壳中输入命令。
2.别管命令了
例如,只需记住是以B开头的命令,键入B并按TAB键两次,就会看到所有以B开头的命令:
(gdb) b回溯中断bt不记得命令:
-h-列出所有命令类。
-help & lt;classname & gt-列出该类别下的所有命令。
3.设置断点:
行断点:break [行号] 函数断点:break [函数名] 条件断点:break[行号] if [条件]
行断点:break[行号]函数断点:break[函数名]条件断点:break[行号]if[条件]
当for循环50次时,程序停留在a++上,这样我们就可以避免手动执行50次。
tip1
记住函数的前缀就行了。您可以这样做:列出所有以make_
(gdb)b make _ & lt;按TAB键>:
tip2
调试C++程序时,存在同名函数。比如:
(gdb) b 'bubble( M-?
bubble(double,double) bubble(int,int)
(gdb) b '泡泡(
在C++中可以查看所有重载的函数和参数。(注:M-?和“按TAB键两次”意思相同)
4.检查断点信息
信息中断5。观察断点:
观察【变量】我们可以设置一个“观察断点”。当这个观察变量改变时,程序将停止。
先在第7行设置断点,R运行程序,watch c观察变量C(注意程序运行后必须观察变量)。继续执行将在变量C的值发生变化的下一行停止:
发现打印变量c的值已经改变。
6.显示变量值:
p [变量]
p[变量]
7.显示所有局部变量:
info local
本地信息
8.显示变量的类型:
ptype [变量]
ptype[变量]
9.分步调试:
Step:缩写S Step调试可以进入函数体。
10.运行下一条语句:
next
然后
继续该计划:
继续:缩写C
执行到程序结束。
11.回溯功能:
Bt backtrace函数可以让我们知道程序是怎么到这个语句的(这里程序简单但不明显),检查函数栈。
12.删除断点:
测试结束,删除断点:
delete [断点号]
删除[断点号]
13.退出广发银行
quit:简写q
退出:q的简称。
在下一篇文章中,我们将深入研究GDB。请注意。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。系信息发布平台,仅提供信息存储空间服务。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
本文来自网络,若有侵权,请联系删除,作者:丁楠远,如若转载,请注明出处: