1.创建cpp文件:vim sourcefile.cpp

2.生成可执行文件:g++ -g sourcefile.cpp -o exename

------加上-g参数,才能输出调试信息; -o:指定生成的可执行文件名;-c:指定目标文件名

3.启动调试:输入gdb进入gdb环境

4.输入 file exename   (告诉gdb要调试了)

5.输入 l (list)查看代码,回车重复上一条命令

-----------------------list 的详细使用-----------------------------

----list  linenum  :显示linenum周围几行代码,我line 5 给我显示了1-10行代码

----list function   :显示函数function的实现代码

----list                :显示当前行后面的代码

----list -             :显示当前行前边的代码

----set listsize count :默认显示10行,可通过这个命令来更改每次显示的行数

----show listsize       :  查看当前listsize的设置。

----list  first, last     :显示从first行到last行之间的源代码.

----list  , last           :从当前行到last

----list +                 : 当前行以后的代码


一般来说在list后面可以跟以下这们的参数: <linenum> 行号。
<+offset> 当前行号的正偏移量。
<-offset> 当前行号的负偏移量。
<filename:linenum> 哪个文件的哪一行。
<function> 函数名。
<filename:function> 哪个文件中的哪个函数。
<*address> 程序运行时的语句在内存中的地址。

6.断点设置:b main   在main函数入口加一个断点

-------break  5  :在第5行设置断点; i b  (info break) 查看断点信息

7.输入 r (run)开始运行代码到断点处

8.输入 s  (step)单步进入函数

9.可以输入 n:单步调试;输入print var (缩写:p var)可以查看变量bar的值

------查看堆栈bt,  down和up可一个一个打印堆栈信息。bt直接打印全部堆栈信息。

10.调试结束,输入c (continue) 运行到结束

-----或者 q  (quit)退出

问题:如果代码错了,不能生成可执行文件该如何??

Linux下gdb使用整理记录的更多相关文章

  1. linux下gdb如何处理coredump错误

    linux下gdb如何处理coredump错误 在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误 会导致程序运行时异常退出或者终止,这种错误没有明显错 ...

  2. Linux知识(5)----LINUX下GDB调试

    命令 解释 示例   file 加载被调试的可执行程序文件.因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample     r c Run的简 ...

  3. 一文入门Linux下gdb调试(二)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...

  4. Linux下常用的命令记录

    本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会 ...

  5. linux下计划任务学习记录

    0x01 计划任务简介 linux 中计划任务主要分为”循环执行”和”只执行一次”两种,分别对应的时 crond 服务 和 atd 服务: 0x02 只执行一次的计划任务 0x02.1 atd 服务说 ...

  6. 一文入门Linux下gdb调试(一)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 在window下我们习惯了IDE的各种调试按钮,说实话确实挺方便的,但到了Linux下,没有那么多的IDE ...

  7. linux下使用indent整理代码(代码格式化)【转】

    转自:https://blog.csdn.net/jiangjingui2011/article/details/7197069 常用的设置: indent -npro -kr -i8 -ts8 -s ...

  8. LINUX下GDB反汇编和调试

    Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数 ...

  9. linux下ffmpeg环境搭建记录

    1.Linux下安装yasm 官网下载:http://yasm.tortall.net/Download.html tar -zvxf yasm-1.3.0.tar.gz cd yasm-1.3.0/ ...

随机推荐

  1. PHP 练习租房

    练习:租房子 <body> <form action="test.php" method="post"> <div>区域: ...

  2. 解决docker中DNS查询的问题

    I got a dns error that i can not access dns server, that caused by : /etc/resolv.conf you can find t ...

  3. 19.allegro过孔设置[原创]

    一.根据线宽设置过孔 在规则管理器下 --- --- ---- --- --- 二.设置原点 法1: -- -- 法二: 然后鼠标点选 ---option栏目在哪? --- 三:过孔问题1 当一个过孔 ...

  4. Object窥探

    /* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...

  5. Create Entity Data Model

    http://www.entityframeworktutorial.net/EntityFramework5/create-dbcontext-in-entity-framework5.aspx 官 ...

  6. 51nod1394 差和问题

    我只会用线段树写...不喜欢树状数组..其实跑的也不算慢?然后各种*的时候忘了longlong一直WA...药丸! 而且我不怎么会用map离散化...那么就sort+unique #include&l ...

  7. OE中admin的内置帐号

    在OE中admin的内置帐号为SUPERUSER_ID,可以用来直接做判断登录用户是否admin from openerp import SUPERUSER_ID if uid == SUPERUSE ...

  8. 15.Object-C--浅谈Foundation框架OC数组NSArray与NSMutableArray

    昨天总结了一下NSString与NSMutableString,今天我在这里总结一下NSArray与NSMutableArray. NSArray数组是:不可变数组. nil 是数组元素结束的标记.O ...

  9. org.hibernate.AnnotationException: No identifier specified for entity: cn.itcast.domain.Counter

    因为我的hibernate映射表没有主键所以报这个错. 解决方案是: 1.创建一个主键 2.hibernate处理无主键的表的映射问题,其实很简单,就是把一条记录看成一个主键,即组合主键<com ...

  10. BZOJ 4557 侦查守卫

    好迷的树形dp... #include<iostream> #include<cstdio> #include<cstring> #include<algor ...