-----------2018.9.26更新标记-----------

gdb的确是个很强大的东西啊,这里记录一下gdb的基本操作吧

后续可能会补充,但暂时感觉够用了就不写多了。

首先是ubuntu终端的2个最基本的操作:(不然会gdb但是调不出终端也没用啊!)

1,cd xxxx     进入xxxx目录

2,Ctrl + Alt + T   调出终端

3,l  列出目录里有哪些文件 & 文件夹

接下来就是gdb了。

前提:编译时加上 -g 选项

比如g++ P1000.cpp -g -Wall -Wextra -o work

(在末尾加-O2可以开O2)

今天才知道-g选项其实也有很多种:

1,g0  没有任何用,等于不加-g

2,g1 只包含少量调试信息

3,g2 默认的选项,可以满足日常使用

4,g3 包含一些额外的信息,比如可以让你查看宏定义。

1,gdb work 调试work

2,gdb 进入gdb界面

3,file 进入gdb界面后可以切换调试的程序,

比如我先

gdb work   -----> 现在在调试work

file work1 -----> 切换到调试work1

4,l 列出10行程序给你看

5,r运行程序

6,b   xxx 在xxx行设置断点/在xxx函数设置断点

7,disp xxx  可以一直查看xxx变量(表达式),使用了之后xxx就会一直挂在上面,很方便

8,d 删除所有断点

9,undisp 1  删除第一个disp 的变量(就是disp之后变量前面那个数字)

10,undisp    删除所有disp 的变量

11,s 进入函数 + 执行下一步

12,n 不进入函数 + 执行下一步

13,watch xxx 监控xxx,如果xxx发生变化,程序将会停下并告诉了发生了哪些变化(注意这个命令要求先在变量所在处设置断点)

14,call 函数名    强制执行某个函数(需要正在运行)

又发现了一些妙妙的东西,,,

15,break 30 if n == 4   当n==4时在30行停下,其中break可以简写为b

16,clear xxx,删除第xxx行的断点,如果不记得xxx行的断点是第几个了,用这个就很方便

17,d x,删除第x个断点

18,info b,查看所有断点信息

19,info disp,查看所有disp的信息

20,l xxx,以xxx行/xxx函数为中心,输出10行源文件

21,l 50,58 (中间逗号要加!)显示50~58行源文件

22,l +/-,显示上次显示那段的上面10段/下面10段

23,set listsize xxx,自己设置每次显示的行数

24,show listsize,查看每次显示的行数

25,l ,50     以50行为结束行,输出10行

26,l 50,   以50为起始行,输出10行

27,finish 退出函数(会把这个函数跑完),简写为fin

28,info program  查看程序信息

29,disable xxx ,暂停第xxx个断点

30,enable xxx ,开启第xxx个断点

31,ctrl + L  清屏

32,bt    打印堆栈

33,frame xxx  ,切换到xxx(上面bt对应的函数前的数字)

34,info locals   接33使用,切换后可以查看对应函数的局部变量信息(准确的说是当前栈层?)

35,*数组@ num 可以查看一个数组的前num项。

36, command n 设置运行到第n个断点时要看的内容,但是好像需要用c指令才可以看到?

如果不加n,那么这个内容将会被赋给最后一个断点。

示例:command 1

  printf "have is %d\n", have

  c

  end

end表示结束

37,u 执行到当前循环结束(貌似要先跑完一次,直到遇到循环语句再执行到当前循环结束)

也就是说如果你写了:

while()
{
LL now = ;
if(s[l] == ')') {++l; return rnt % mod;}
++l;
}

然后你在LL now = 0;这行用u是没有用的,会一直运行到while(1)这一行,然后你再用u,然后就会执行到这个循环结束再显示给你

38,finish 运行到当前函数结束,如果函数有返回值,将会告诉你返回值。

39,jump 强行跳转到指定行,被跳过的内容都会被运行,如果你跳到一个后续状态中不会遇到的地方,那么将会出错。

40,return 强行return,可以返回指定值

41,tbreak 简写为tb ,创建一个临时断点,碰到一次之后这个断点就会被删除。

42,print x = 4 表示将x这个变量修改为4

43,set var x = 4 效果和上面相同

44,start 开始调试,从main开始,按程序运行顺序调试(不需要提前设置断点)。 我是不是应该把这条放到开头

偷偷记录一些其他命令:

1,ulimit -s 查看栈空间大小

2,ulimit -s xxx 将栈空间设置为xxx、

3,ulimit -a  查看有关栈空间的详细信息(可以查看一些指令的用法)

4,time 可以查看一个程序的运行时间。 使用方法: time ./work   ----> 查看work这个程序的运行时间

Linux相关——记录gdb基本操作(持续更新)的更多相关文章

  1. Arch Linux + KDE 配置&美化(持续更新~)

    Arch Linux + KDE 配置&美化(持续更新~) 这篇文章着重记录archlinux + KDE的一个基本的配置过程.不包括安装过程(使用archInstall.sh).内容大概有以 ...

  2. Linux相关——记一些ubuntu相关快捷键&操作(持续更新)

    (有一些是windows通用的...放上来凑字数...) 1, ctrl + alt +  t.调出终端,这个没什么好解释的. 2, win + s.可以快速查看打开的窗口,并进行切换 3,win + ...

  3. Linux 相关学习内容(不定期更新)

    Linux 主要目录 / 根目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 /bin 可执行二进制文件的目录,如常用的命令,ls, tar, mv, cat.. /boot 放置 ...

  4. ubuntu相关软件合集(持续更新中)

    本人使用的是Ubuntu-Kylin14.04,自带了日历.输入法.优客助手等易于上手的应用.省的每次安装完原生的系统再麻烦的安装,下面介绍默认应用外的相关常用软件: 一.Keylock Applic ...

  5. 【Linux】常用命令,持续更新

    Linux 一.linux的组成 内核,shell,文件系统,应用程序 二.linux目录结构 bin,sbin,home,root,boot,dev,etc,lib, 三.文件目录操作 ls,cd, ...

  6. Strus2学习记录整理【持续更新】

    Strus2学习记录 以后的Strus2学习记录地址都会集合在这里,希望大家可以一起愉快学习,相互学习! Exception: 地址:http://www.cnblogs.com/gcs1995/p/ ...

  7. Linux文件权限管理(持续更新)

    文章是从我的个人博客上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com 以root身份登录linux以后, ls -al 可以看到 -rw-rw-r--  1 wangzhe ...

  8. 面试相关-转载-well,yzl——持续更新

    转载yl,yzl大神的面经,顺便自己复习一下专业课的内容 操作系统相关: 什么是进程, 什么是线程.它们之间的区别和联系. 进程管理内存资源+运行过程, 线程只管理运行过程, 线程要在进程提供的资源基 ...

  9. 【linux】常用命令集锦&持续更新...

    滴:转载引用请注明哦[握爪]:https://www.cnblogs.com/zyrb/p/9709013.html  对深度学习训练及日常work中的常用linux命令进行整理. [一]screen ...

随机推荐

  1. 理解unittest(六)

    unittest,顾名思义就是一个单元测试框架,但是它不仅适用于单元测试,还适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成 ...

  2. Linux 安装Nginx(使用Mac远程访问)

    阅读本文需要一定的Linux基础 一 Nginx简介 nginx是用c语言编写的一款高性能的http服务器|反向代理服务器|电子邮件(IMAP/POP3)代理服务器 由俄罗斯的程序设计师Igor Sy ...

  3. 六边形地图Cube coordinates理解

    1.这个是 Axial coordinates,可以实现六边形4个方向上的移动 2.但是六边形还有两个方向需要移动,所以引入了Cube coordinates,这个坐标系多了一个轴向,Y轴,X轴沿水平 ...

  4. 服务治理-> Spring Cloud Eureka

    服务治理->搭建服务注册中心 服务治理可以说是微服务架构中最为核心和基础的模块, 它主要用来实现各个微服务 实例的自动化注册与发现. 为什么我们在微服务架构中那么需要服务治理模块呢?微服务 系统 ...

  5. CentOS7下,防火墙设置

    CentOS中防火墙程序主要是firewall和iptables两种. CentOS7中firewall服务已经默认安装好了,而iptables服务需要自己用yum install  iptabes- ...

  6. sar命令详解

    基础命令学习目录首页 原文链接:http://lovesoo.org/linux-sar-command-detailed.html sar(System Activity Reporter系统活动情 ...

  7. linux命令系列 stat & touch

    1. stat - display file or file system status stat命令主要用于显示文件或文件系统的状态,详细信息 事实上,stat命令显示的是文件的I节点信息.Linu ...

  8. 树莓派3+rtl8812au开启monitor模式

    首先要有一块树莓派,要有一块rtl8812au的网卡. 这个网卡是支持monitor模式的,但是我原来装的驱动驱动在raspbian上开启monitor模式时提示,找不到设备. 然后换了一个驱动 ht ...

  9. java实验2实验报告(20135232王玥)

    实验二 Java面向对象程序设计 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解 ...

  10. css方法div固定在网页底部

    css .bottom{width:%;height:40px;background:#ededed;;}/*重点后两句*/ body <div class="bottom" ...