Linux下使用GDB调试程序
问题描述:
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调试程序的更多相关文章
- ICS2019汇编实验在Linux下使用GDB调试程序
- Linux下使用GDB进行调试
Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test <------- ...
- linux下使用gdb对php源码调试
title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概 ...
- Linux下交叉编译gdb和gdbserver
平台:tq2440 GCC: gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176) 这里过程中参考了下面两篇博文: http://blog.csdn.ne ...
- Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
交叉编译gdb和gdbserver 1.下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本.当然,凡事无绝对.我们以gd ...
- Linux下用gdb 调试、查看代码堆栈
Linux中用gdb 查看代码堆栈的信息 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的. 调试的话输入: gd ...
- linux中使用gdb调试程序
ref:https://blog.csdn.net/tenfyguo/article/details/8159176 一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决, ...
- linux下的gdb调试工具--断点调试
到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以 ...
- NOI Linux下Emacs && gdb调试方法
1. 首先要配置emacs文件: (global-linum-mode t) (show-paren-mode t) (global-set-key (kbd "C-s") 'sa ...
随机推荐
- Cocos2d-x如何控制动作速度
基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变.但这样的改变速度匀速的.线性的.通过ActionEase及其的派生类和Speed 类我们可以使精灵以非匀速或非线性速度运动,这样看起了效果更 ...
- C# GET 和 SET作用
C#中get和SET,看来看去还是看不懂,通俗一点解释一下,用了有什么好处,不用会怎么样 如果你这样写是没有什么不一样的. private int __Old; public int Old{ get ...
- 4月8日学习笔记(js基础)
<script>标签放在<body>和<head> 放在 <head></head> 里的会比放在 <body></bod ...
- 《Web编程入门经典》
在我还不知道网页的基础结构的时候,我找过很多本介绍Web基础的书籍,其中这本<Web编程入门经典>,我认为是最好的. 这本书内容很全面.逻辑很严谨.结构很清晰.语言文字浅显易懂. 看这本书 ...
- Mysql 作业(Scheduler)
200 ? "200px" : this.width)!important;} --> 介绍 作业也叫做事件调度,其实它也就是一个时间触发器:它可以定义某个时间点执行指定的数 ...
- WinForm窗体间如何传值的几种方法
(转) 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点: ...
- js控制进度条到达100%跳转界面一
进度条一般在手机上用到的比较广泛,刚好最近的项目也是一直在做手机站,这个特效是手机端的一个界面,现在我把改成pc端了,进度条的快慢速度和样式可自行调节,改动也是很方便的,不多说,看代码: <st ...
- 五个免费UML建模工具推荐
UML工具很多是商用的,价格不菲:而免费的UML建模工具,功能完善的很少.以下推荐的是五个免费的UML建模工具,相对而言还算功能比较不错. 1.免费UML建模工具推荐:JUDE – community ...
- DIV当textarea使用,在聚焦的时候将光标移动到内容的末尾
#### DIV当textarea使用,在聚焦的时候将光标移动到内容的末尾 #### <style type="text/css"> .test_box { width ...
- css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...