问题描述:

         Linux下使用GDB调试程序

问题解决:

         (1)生成调试文件

注:

        使用命令   gdb IOStream.c   -o IOStream  -g  最后一个参数是生成gdb调试文件的参数信息(必不可少,否则生成的是可执行的文件)。

        上述出现如上的警告信息,解决的办法是在IOStream.c文件中引用    #include<stdlib.h>

        (2)载入生成的gbd文件IOStream

注:   

        在Console中输入gdb启动gdb调试

注:

         使用file IOStream   命令载入gdb文件

注:

  set args 参数名 设置运行文件的参数值   

        show args 显示参数信息

        (3)源程序信息预览

注:

           使用命令  info souce 可以查看源程序信息。

        (4)源代码预览

    ·       

注:

  list <linenum>         显示程序第linenum行的周围的源程序。   

    list <function>         显示函数名为function的函数的源程序。       

    list            显示当前行后面的源程序。   

    list  -         显示当前行前面的源程序。

    list +         显示当前行之后的源程序

注:

         使用list <linenum>显示指定行前后的部分代码

注:

        gdb调试时,屏幕信息太多,导致难以看清楚,这时可以使用  shell   clear  命令,清除当前屏幕信息。

     (5)设置断点

注:

        使用命令   b <linenum> 或者 b <funname>  可以在指定行或者指定函数名称处设置断点。

注:

        使用info  br 或者 info breakpoints 查看断点信息。

注:

      删除断点可以有以下几种方式:

(1)clear 行号 

         (2)delete 断点号

         (3)clear 函数名

     上述三种方式都可以删除断点

         (4)删除所有断点  delete

    (5)开始调试

注:

        使用命令  run 或者 r 可以开始对载入的文件进行调试,程序在第一个断点处停止,可以使用命令 p 变量名  输出变量名对应的值。

   s 表示step的含义,单步执行

注:

next命令,是按照行执行,如果该行有函数调用,单步调试会跳转到程序中,next会执行运行结束该函数调用,无须进入。

注:

display命令,用于跟踪某个变量的变化,每次执行都会输出该变量的值。

        (6)终止调试

注:

命令kill  终止当前正在调试的程序

       (7)退出gdb

注:

      使用命令 quit 或者 q    可以退出gdb

Linux下使用GDB调试程序的更多相关文章

  1. ICS2019汇编实验在Linux下使用GDB调试程序

  2. Linux下使用GDB进行调试

    Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test         <------- ...

  3. linux下使用gdb对php源码调试

    title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概 ...

  4. Linux下交叉编译gdb和gdbserver

    平台:tq2440 GCC:  gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176) 这里过程中参考了下面两篇博文: http://blog.csdn.ne ...

  5. Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件

    交叉编译gdb和gdbserver 1.下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本.当然,凡事无绝对.我们以gd ...

  6. Linux下用gdb 调试、查看代码堆栈

      Linux中用gdb 查看代码堆栈的信息 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的. 调试的话输入: gd ...

  7. linux中使用gdb调试程序

     ref:https://blog.csdn.net/tenfyguo/article/details/8159176 一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决, ...

  8. linux下的gdb调试工具--断点调试

    到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以 ...

  9. NOI Linux下Emacs && gdb调试方法

    1. 首先要配置emacs文件: (global-linum-mode t) (show-paren-mode t) (global-set-key (kbd "C-s") 'sa ...

随机推荐

  1. Jersey(1.19.1) - Hello World, Get started with a Web application

    1. Maven Dependency <properties> <jersey.version>1.19.1</jersey.version> </prop ...

  2. 转 Android 4.0后,自定义Title报错 You cannot combine custom titles with other title feature

      自定义Titlebar时为了避免冲突 需要修改:AndroidManifest.xml android:theme="@style/mystyle" styles.xml文件中 ...

  3. 把CheckedListBoxControl设置为单选框

    private void chkControl_ItemChecking(object sender, DevExpress.XtraEditors.Controls.ItemCheckingEven ...

  4. Fragment里面的ViewPager嵌套subFragment,主Fragment切换的时候subFragment出现空白Fragment的Bug

    Fragment第二次进入不显示,主要是第二次加载的时候重复调用了onCreateView()这个方法,重新new了一个pageadapter导致子fragment不显示,问题的解决方法就是在onCr ...

  5. TCP/IP——内外网IP+子网掩码作用+PING(网络总结)

    目录: 1.如何区分内网IP和外网IP? 保留字段 2.子网掩码是起什么作用的? 将DNS和IP异或,表示哪段起作用 3.ping到底起什么作用? ping本地.ping远程 下面针对上面三个问题分别 ...

  6. ios开发----视图的生命周期

    熟悉web开发的朋友可能对页面page的生命周期有一定的了解和认识,正如web开发中的页面生命周期一样,移动客户端开发也有它自己的生命周期.下文将说明ios开发中视图的生命周期既运行顺序. 在ios视 ...

  7. js判断输入字符串长度(汉字算两个字符,字母数字算一个)

    js判断输入字符串长度(汉字算两个字符,字母数字算一个) 文本输入时,由于数据库表字段长度限制会导致提交失败,因此想到了此方法验证. 废话不多说上代码: <html> <head&g ...

  8. jQuery-ui treegird 使用

    在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的editor类型,这时原有的例子就显的有点太过简单,不能实现我们的需求,现在应用我在项目中的操作为例,显示下实现同列 ...

  9. spring事务到底用于service层还是dao层

    Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性. 事务得根据项目性质来细分:事务可以设置到三个层面(dao层.service层和web层). 第一:web层事务,这一般是针对那些安 ...

  10. C/C++ union

    叙述原因: union data{ int a;double b;}; 对于union,实际中用的并不多,之前也知道怎样计算union的单元(在字对齐的基础上取最大成员所占的内存大小),比如 unio ...