gdb调试入门(上)
一、什么是gdb:gdb是GNU debugger的缩写,是编程调试工具
二、gdb功能:
1、启动程序,可根据用户要求随心所欲的运行程序(比如带参数)
2、可让被调试的程序在用户指定的调试的断点处停住
3、当个程序停住,可以检查程序中发生的事(比如打印变量值)
4、动态改变变量程序的执行环境
三、使用实例:
gcc -Wall -g mian.c -o simple 注意:需要加上-g选项,以便生成调试信息。方便gdb调试,如果不加,只显示汇编代码,没有源文件代码。
gdb simple #启动gdb
(gdb) list #查看所有源代码 l 2,10
break 10 #设置断点 b func 在函数func处设置断点
i b #查看断点
info break #查看断点
l(list) 10 #查看第10行代码
run #启动程序
s #单步跟踪
print i #打印当前i的值
until #跳出循环,当厌倦了在一个循环体内单步跟踪时,这个命令可以直接运行程序直到退出循环。
p(print) result #查看result值
c #运行到下一个断点处 continue
step(s) #单步跟踪
next(n) #不进入函数内(单步)
finish #退出整个函数
q #退出gdb
break if<condition> #条件成立时中断
watch expr #当expr值发生改变时,程序中断
delete n #删除断点 n为第几个断点,n=1,删除第一个断点。
接下来详细讲解下一:
1、run arg1 arg2 :运行时,可以跟上参数。若未设置断点,则直接运行程序。否则运行到断点处。
2、list fun 查看fun函数源码。 list file:fun 查看file文件中的fun函数源码
3、break 行号:设置断点; break fun 在某函数处设置断点 ; 或者break file:行号 ;break file:fun
4、continue(c) 运行到下一个断点
5、s单步跟踪,会跟踪到函数内部。
6、finish:运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值以及参数值等信息。
7、next(n):单步跟踪,不进入函数。
gdb调试入门(上)的更多相关文章
- Linux gdb调试入门
没有使用过gdb调试过程序的觉得gdb是个很神奇的东东,如果你使用它调试一次保证你想忘记它都难,下面看看它的庐山真面目吧! GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...
- gdb 调试入门,大牛写的高质量指南
引用自:http://blog.jobbole.com/107759/ gdb 调试 ncurses 全过程: 发现网上的“gdb 示例”只有命令而没有对应的输出,我有点不满意.gdb 是 GNU 调 ...
- gdb调试入门(下)
GDB调试主要包括: 1.查看运行时数据 2.程序错误 3.gdb调试逻辑错误 4.gdb调试段错误 5.core文件调试 一.查看运行时数据 1.print 查看变量值 2.ptype 变量: 查看 ...
- gdb调试多进程多线程程序
一.调试的指令 1.list命令 list linenum 显示程序第linenum行的周围的程序 list function 显示程序名为function的函数的源程序 list 显示当前行后面的源 ...
- 一文入门Linux下gdb调试(二)
作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...
- mac上eclipse用gdb调试(转)
mac上eclipse用gdb调试 With its new OS release, Apple has discontinued the use of GDB in OS X. Since 2005 ...
- 硬盘上的一些算法小题目||and今天看了下林锐的书以及gdb调试 及一些变成算法小题目
gdb调试:观察点,断点,事件捕捉点.step 进入函数,next 跳过函数,until 跳出循环,finish 结束函数 林锐:书后试题 & c++的对象模型图 看了二叉树的非递归遍历, 链 ...
- linux程序调试命令addr2line之入门简单介绍(本文先不聊gdb调试)
addr2line有什么作用呢? 可别小瞧它, 它能够定位到代码出错的位置. 以下, 我们来看看这个简单的代码: #include <stdio.h> int main() { int * ...
- CentOS 6.5上使用gdb调试时出现Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686 .
在CentOS6.5上用gdb调试时提示Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686先修改 ...
随机推荐
- 用网桥和veth实现容器的桥接模式
原理图如下 具体命令先不写了,有时间再写,主要还是用的上一篇说的知识.
- java怎么产生随机数
随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 需要借助java.util.Random类来产生一个随机数发生器,也是 ...
- 原生js实现一个自定义下拉单选选择框
浏览器自带的原生下拉框不太美观,而且各个浏览器表现也不一致,UI一般给的下拉框也是和原生的下拉框差别比较大的,这就需要自己写一个基本功能的下拉菜单/下拉选择框了.最近,把项目中用到的下拉框组件重新封装 ...
- gin框架使用orm操作数据库(转)
简介:orm俗称关系对象模型,用来映射数据库SQL和对象的工具 ,相当于mongodb里面的mongoose库,Java里面的mybatis ibatis Golang GORM使用 https: ...
- flutter——android报错建议Suggestion: add 'tools:replace="android:label"'
问题: 安装了一个新包,android出现了报错,建议add 'tools:replace="android:label"'. 原因: 项目application的label属性冲 ...
- 封装是java面向对象编程三大特征之一。 简单的属性封装
package com.cqvie.Hello; class Person { private int age; private String name; public void tell() { ...
- 构造函数原理 - Js对象
构造函数内部原理 有new之后,函数变成构造函数,产生三步隐式变化 1.函数执行,在函数体顶端隐式加上var this = {}; 2.执行赋值,AO{ this : {name:'zhangsan' ...
- elasticsearch mysql配置
1,开启bin-log 2,binglog_foramt格式必须为row 3,配置server_id为1001 4,binlog-row-image 必须为full log-bin=mysql-bin ...
- 【0】TensorFlow光速入门-序
本文地址:https://www.cnblogs.com/tujia/p/13863181.html 序言: 对于我这么一个技术渣渣来说,想学习TensorFlow机器学习,实在是太难了: 百度&qu ...
- List集合,对象根据某个相同的属性,合并另外属性
描述及实现: 1.List中有 Modular字段值有重复一样的2.Modular字段一样的话去重并且OrderAmount相加 HashMap<String,DataReport> te ...