GDB与coredump错误类文件的解析

                     GDB与coredump错误类文件的解析
  GDB是Linux与UNIX系统下的一款程序调试工具,下面来介绍GDB的用法:

请先看这个程序:

这是我们作为实验的一个小程序,共10行输出4

进行编译如果要用GDB调试必须要加-g参数

这是编译好的文件的正常运行

开始调试这个程序 gdb 加文件名

现在介绍第一个参数l(list)就是如图这样显示程序的内容, l后还可以加数字,就是打印这个行数上下共10行。

start程序开始单步调试,自动执行第一步。

参数b 设置断点就是程序函数到这一步暂停等待下一步的指示,b 5 就是在第五行设置断点,特别的如果这一行是空行,它会自动跳到下一行去,所以设置的断点不是绝对的断点,r参数(run)就是运行程序,一步运行完或者到断点暂停,使用r与b 参数可以随心所欲的掌控程序运行。

info b查看断点的数量与情况,del 行号,删除已经设定的行号,应经设定的断点会一直存在(请注意这一点)

参数c程序继续执行直到遇到下一个断点暂停,n不进入子函数进行单步运行,s进入子函数进行单步运行。

p 打印某个值,set 给某个值赋值。

注意:

系统函数不能单步调试

无初始值的行也会自动跳过

     现在介绍有段错误文件的调试,一般操作系统并不开生成错误文件这个选项,因为这回产生很多的垃圾文件,我们可以通过
     ulimit -c unlimited 开启生成coredump文件。想要永久生效请修改,配置文件:
  bash.profile /etc/profile 或者/etc/security/limits.conf
     然后 echo"/corefile/core-%e-%P-%t"> /proc/sys/kernel/core_pattern
 产生的core文件名为core-进程名-PID-时间戳 %h添加主机名
     然后就可以调试了gdb coredump 段错误文件就可以看到程序出错最后的栈的信息了。
时间: 2024-12-05 09:41:45

GDB与coredump错误类文件的解析的相关文章

[Debug]用gdb分析coredump文件

1,系统默认是不产生coredump文件的,需要用以下命令使系统产生coredump文件 查看core文件的限制,此时为0,即不成生core文件 ulimit -c 0 打开core文件的限制,不限制core文件的大小,使程序可以产生core文件 ulimit -c unlimited ulimit -c unlimited 2,以下是内存访问错误示例 [cpp] view plaincopy 1 #include<stdio.h> 2 int main() 3 { 4      char* 

错误的类文件:… 类文件具有错误的版本 52.0,应为 50.0

出现问题: 今天在pom.xml中引入了最新版本guava工具包,编译时报了如下错误: [ERROR] E:\workspace\report\src\main\java\indi\johnny\report\template\excel\ExcelXSSFStyle.java:[16,-1] 无法访问 com.google.common.base.Strings错误的类文件: com\google\common\base\Strings.class(com\google\common\base

javap -- Java 类文件解析器

参考文档 http://blog.chinaunix.net/uid-692788-id-2681132.html http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javap.html 功能说明:Java 类文件解析器. 语法:javap [ 命令选项 ] class. . . 补充说明: javap 命令用于解析类文件.其输出取决于所用的选项.若没有使用选项,javap 将输出传递给它的类的 public 域及方法.ja

使用GDB生成coredump文件【转载】

本文转载自: http://blog.csdn.net/sky_qing/article/details/8548989 如果在测试过程中遇到某个进程的CPU利用率过高或者卡死而需要去调试该进程时,可以利用gdb命令生成coredump文件,然后再去调试coredump文件来定位问题. 那么如何使用gdb生成coredump文件呢?其实步骤很简单: 1. 安装好gdb,然后使用命令 'gdb'.(假设需要调试的进程号为 21509) 2. 使用 ‘attach 21590’命令将gdb附加到进程

命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法

在学习NDK中,当我在项目的bin/classes目录下使用javah命令生成头文件时,出现了“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”这个问题,如下 跳转到项目的src目录下使用javah命令,而不是在项目的bin/classes目录下使用javah命令即可! 无法访问android.app.Activity是说明没有引入android.jar包可以看看java -h里面的具体说明.其中有一个-bootclasspath

gdb调试coredump文件

linux上程序崩溃起来挺烦人,不过linux 比较好的是有gdb. 1.生成coredump文件 echo "ulimit -c unlimited" >> /etc/profile 然后记得敲入命令 source /etc/profile 然后敲入命令: ulimit –c 效果如下: 确认能否生成coredump文件,使用如下命令(使用时注意,我在测的时候会直接退出当前用户) kill -s SIGSEGV $$ 然后回到执行上述命令的路径下即可看到coredump文

错误:无法访问android.app.Activity 找不到android.app.Activity的类文件

[问题] 当在Android项目路径下,使用javah指令生成.h文件时,javah -classpath bin/classes -d jni com.example.myhellojni.MainActivity 出现--->错误:无法访问android.app.Activity 找不到android.app.Activity的类文件. 其中 -classpath bin:表示类的路劲 其中 -d jni: 表示生成的头文件存放的目录 其中 com.example.hellojni.Hell

错误: 类Something是公共的, 应在名为 Something.java 的文件中声明

Java编译报错: 错误: 类Something是公共的, 应在名为 Something.java 的文件中声明 如下图所示: 第一种解释:"类A是公共的,应在名为 A.java 的文件中声明"这句话需要分两步来理解: 1.在Java中,如果类A被声明为公共的(public),那么必须将类A保存在名为 A.java的文件中: 2.反之,在一个Xxx.java的文件中最多包含一个顶级的公共类,并且该公共类的名字要与文件名相同.比如文件A.java中,允许定义一个或多个类,但最多允许一个顶

20150124--初始化类文件编写

和涛哥学习MVC一 目录 和涛哥学习MVC一... 1 一.项目开发流程... 2 二.MVC原理解析... 2 1.简介... 2 2.名词解析... 2 3.单一入口访问原理... 3 4.MVC单一入口原理图... 3 5.mvc项目文件结构... 3 三.编写MVC框架... 4 1.编写index.php入口文件... 4 2.编写Application.class.php初始化类文件... 4 1)初始化字符集... 4 2)初始化系统常量... 5 3)初始化错误信息... 5 4