C学习笔记-gdb

gdb即GNU debugger,用来调试程序

gdb使用前提

要使用gdb,则需要在编译源代码时候使用-g参数

gcc -g –o test test.c

启动gdb

gdb 程序名 [corefile]

corefile是可选的,但能增强gdb的调试能力
Linux默认是不生成corefile的,所以需要在用户profile文件中添加ulimit -c unlimited,修改完成之后让profile文件及时生效
另外程序错误时候会生成core或者core.*文件,也可作为其参数

gdb的使用

快速定位软件出错位置

  • 启动gdb调试错误
gdb test core
  • 关闭多余软件信息
gdb -q test core

如果软件出错,就会打印出出错的语句

使用gdb调试

  • 启动gdb
gdb test
  • 运行程序
(gdb) run
  • 显示导致段错误的执行函数树
(gdb) where
  • 显示包含错误附近代码
(gdb) list [m,n]

m,n为可选参数,表示起始行和结尾行
不带参数默认显示附近10行

  • 显示表达式、变量的值
(gdb) print 变量(表达式) 
(gdb) print 'file'::变量(表达式) ##''是必须的,以便让gdb知道指的是一个文件名。
(gdb) print funcname::变量(表达式)

e.g.

(gdb) print i
  • 变量的类型
(gdb) whatis i
  • 结构的定义
(gdb) ptype st

gdb的断点使用

  • break命令设置断点
break linenum
break funcname
break filename:linenum
break filename:funcname
  • 进入gdb调试模式
gdb -q test
(gdb) break 5 
(gdb) run

以上是进入gdb调试,在代码第5行设置断点,运行程序

  • 查看已设置断点
(gdb) info break
  • 从断点以后继续执行
(gdb) continue
  • 删除一个断点
(gdb) delete
  • 改变一个变量的值
(gdb) set variable varname = value
  • step命令
    当遇到一个函数的时候,step将进入函数,每次执行一条语句,相当于step into
(gdb) step
  • next命令
    当遇到一个函数的时候,next将执行整个函数,相当于step over
(gdb) next
  • return [value]命令
    停止执行当前函数,将value返回给调用者,相当于step return
(gdb) return [value]

转载于:https://www.cnblogs.com/cj5785/p/10664754.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动开发day1_过渡_2d转换_3d立体

今天是就业班开班的第一天,上完了一天的课,做点总结。 什么叫做移动web 专门在手机或者 平板电脑 浏览器网页 为什么要学习移动web 工资高 1. 人拥有的手机数 大于 电脑的个数 2. 微信 1. 微信公众号  2. 微信小程序   3. 移动web基础知识 可以用在微…

java数组初始化

数组初始化式只能用于声明同时赋值的情况下 如果没有显式赋值,则系统自动赋默认值null Java的对象都是在堆上分配空间 ① String [ ] anew String[ ]{" "," "," " }; ②String [ ] a{" "," "," "…

原型模式和C++的拷贝构造函数有什么区别

都是基于个人理解,本文是为了帮助记忆。 相同点:原型模式和拷贝构造函数都是要产生对象的复制品。 不同点:原型模式实现的是一个clone接口,注意是接口,也就是基于多态的clone虚函数。也就是说原型模式能够通过基类指针…

Taro项目遇到的问题

1. https://taro-ui.aotu.io/#/docs/questions 请在Taro项目根目录找到 config/index.js 文件中的h5项,添加如下: h5: {...esnextModules: [taro-ui] } 2. 原则:少什么就装什么 少了 babel-plugin-transform-decorators-legacy ,那…

JSP编译指令

page指令 page指令作用于整个JSP页面&#xff0c;其定义了与页面相关的一些属性&#xff0c;这些属性将被用于和JSP服务器进行通信。 page指令的语法如下&#xff1a; <% page属性1“属性值” 属性2“属性值”……%> 其XML形式为&#xff1a;<jsp:directive.page属性1…

WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法问题描述 今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发现默认菜单式不可用的. 问题原因…

Syntax error on tokens, delete these tokens

可能出现的错误&#xff1a; 弄错了引号括号之类造成&#xff1b; 在代码前过多空格&#xff0c;特别是对于那些黏贴来的代码&#xff1b;

1698 -Access denied for user 'root@xxxx'

grant all privileges on *.* to userlocalhost Identified by password WITH GRANT OPTION; grant all privileges on *.* to root% Identified by password WITH GRANT OPTION; 予任何主机访问数据的权限 3、MySQL>FLUSH PRIVILEGES修改生效 4、MySQL>EXIT 退出MySQL服…

严重: StandardServer.await: create[localhost:8005]

①看看任务管理器&#xff0c;是否打开了多个Tomcat程序 如果是&#xff0c;关闭其中一个 ②可能是端口冲突 1、将tomcat安装目录下的conf/server.xml中的8005端口号改为其它的端口号。&#xff08;不建议&#xff0c;因为会衍生出其他错误&#xff09; 2、将正在使用的8005端…

ACdream区域赛指导赛之手速赛系列(2)

版权声明&#xff1a;本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/DaiHaoC83E15/article/details/26187183 回到作案现场&#xff1a;http://acdream.info/onecontest/1014 前言&#xff1a;自己出份山寨版的解题报告。 - - - - - - - - - - - - - - - …

java里short,int,long,float,double范围及可写位数

一、取值范围 1、int二进制位数&#xff1a;32 包装类&#xff1a;java.lang.Integer最小值&#xff1a;Integer.MIN_VALUE -2147483648 &#xff08;-2的31次方&#xff09;最大值&#xff1a;Integer.MAX_VALUE 2147483647 &#xff08;2的31次方-1&#xff09;2、short 二…

第六周编程总结

6-1 求两数平方根之和 &#xff08;10 分) 函数fun的功能是&#xff1a;求两数平方根之和&#xff0c;作为函数值返回。例如&#xff1a;输入12和20&#xff0c;输出结果是&#xff1a;y 7.936238。 函数接口定义&#xff1a; double fun (double a, double b); 其中 a和 b是用…

【CH5105】Cookies

也是一道线型动态规划的好题…… 读入每个人的贪婪度之后&#xff0c;对其按照从大到小的顺序排序&#xff0c;定义状态f[i][j]为前i个人&#xff08;排序后&#xff09;分j个饼干的答案&#xff0c;那么答案为f[n][m],考虑状态转移方程。 1、若给第i个人的饼干数大于1 &#x…

POJ 3614 Sunscreen

Sunscreen Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12907 Accepted: 4534Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with sunscreen when theyre at the beach. Cow i has a minimum…

十六进制转八进制(java)

问题描述  给定n个十六进制正整数&#xff0c;输出它们对应的八进制数。输入格式  输入的第一行为一个正整数n &#xff08;1<n<10&#xff09;。  接下来n行&#xff0c;每行一个由0~9、大写字母A~F组成的字符串&#xff0c;表示要转换的十六进制正整数&#xff0…

sharing-jdbc实现读写分离及分库分表

需求&#xff1a; 分库&#xff1a;按业务线business_id将不同业务线的订单存储在不同的数据库上&#xff1b; 分表&#xff1a;按user_id字段将不同用户的订单存储在不同的表上&#xff0c;为方便直接用非分片字段order_id查询&#xff0c;可使用基因法&#xff1b; 读写分离&…

java中math类方法之数学运算(pow,exp,三角函数,指数)

Math中定义了许多的方法&#xff0c;通过Math类就能直接调用&#xff0c;均为static类型。 1、 调用形式:Math.方法名2、三角函数方法&#xff1a; static double sin(double a ) &#xff1a; 返回角的三角正弦static double cos(double a) &#xff1a; 返回角的三角余弦s…

java中如何将数字转换成字符串(int转换为string)

String s "123"; int n 12; 方法一:通过包装类来实现String ss String.valueOf(n); 方法二:直接通过空字符串数字的形式转换为字符串String ss ""n;// 方法三:强制类型转换String ss &#xff08;String&#xff09;n;

UVa 297 四分树

感觉特别像那个分治的日程表问题。是f的话就填&#xff0c;否则就不填&#xff0c;然后同一个表填两次。那么就是最后的结果。 1 #include <iostream>2 #include <cstring>3 #include <string>4 #include <map>5 #include <set>6 #include <a…

java二维数组初始化(动态,静态)

int[][] anew int[][]{{1,2},{3,4},{5,6,7,8,9},{}}; System.out.println(a.length);//4,表示数组的行数 System.out.println(a[0].length);//2&#xff0c;表示对应行的长度 System.out.println(a[1].length);//2 System.out.println(a[2].length);//5 …