笔者曾在AIX系统下使用C语言开发多个应用系统。众所周知,C语言编写程序时容易出现内存使用不当的BUG,例如内存越界、使用野指针、内存未初始化等等。在程序运行时,这些BUG很可能造成程序崩溃,但在测试时往往又无法重现问题。此类问题往往让开发者大伤脑筋,在老板和客户的追杀下无地自容,恨不得一死了之。

幸好,当程序崩溃时,AIX会自动产生一个core文件,该文件保存了进程崩溃时的运行环境,包括当时的函数调用堆栈、栈内存、堆内存等。

将core文件复制到开发环境,使用命令

$ file core

可显示core文件是由哪个进程产生。

将core文件与该进程的文件放到同一路径下,使用命令

$ dbx 进程文件

即可进入dbx调试器,并将此进程文件产生的core文件打开。

此时使用dbx命令

> where

可看到当前的函数调用堆栈(如果调用堆栈还没有被破坏),即可知道程序运行到哪个函数时崩溃了。如果编译时使用了 –g 参数,则还可以看到源码文件名与行序号。

如果出现内存越界的错误,往往调用堆栈已被破坏,此时使用 where 命令看不到调用的函数。这种情况下往往会让大多数程序员束手无策。不过,我们仍然可以通过分析core文件中的内容,获得进程崩溃时的运行数据。在dbx中使用命令

> coremap

可看到此core文件中当前的内存布局。

AIX下core文件的分析的更多相关文章

  1. [转载]linux下core文件设置与查看

    转自:https://blog.csdn.net/dingqinghui/article/details/77855330?locationNum=9&fps=1 linux下core文件设置 ...

  2. Linux下core文件产生的一些注意问题

    前面转载了一篇文章关于core文件的产生和调试使用的设置,但在使用有一些需要注意的问题,如 在什么情况 才会正确地产生core文件. 列出一些常见问题: 一,如何使用core文件 1. 使用core文 ...

  3. linux下core文件调试方法

    http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映 ...

  4. linux下core文件设置(转)

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...

  5. linux下core文件调试方法(转载)

    转自于:http://blog.csdn.net/fcryuuhou/article/details/8507775 在程序遇到段错误不寻常退出时,一般是访问内存出错.但是不会给出程序哪里出现的问题, ...

  6. lnux 下 core文件

    1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. 开启或关闭core文件的生成用以下 ...

  7. linux 下core文件生成、路径、格式设置及调试

    core文件生成及调试1 代码 #include<stdio.h> int main() { int *p = NULL; *p = 0; return 0; } 2 在当前shell执行 ...

  8. Linux下core文件调试

    1,ulimit -a查看默认参数 2,ulimit -c 1024 设置core文件大小,如果超过1024个blocks,则不会产生core文件 注:tune2fs -l /dev/sda8 输出分 ...

  9. 结合程序崩溃后的core文件分析bug

    引言     在<I/O的效率比较>中,我们在修改图1程序的BUF_SIZE为8388608时,运行程序出现崩溃,如下图1:          图1. 段错误     一般而言,导致程序段 ...

随机推荐

  1. Kafka+OpenCV 实现实时流视频处理

     1. 启动Kafka Server bin/kafka-server-start.sh config/server.properties & 2. 创建一个新topic bin/kafka- ...

  2. inconfont的使用

    iconfont 进入阿里的矢量图标库,进入到我的项目(图标库)中,可以看到如下页面 根据不同的使用方式(Unicode.Font class.Symbol)可将对应文件下载至本地或直接在项目中引入 ...

  3. useragent大全

    分享几个常见的User-Agent,复制粘贴过来的,谢谢原创. window.navigator.userAgent 1) Chrome Win7: Mozilla/5.0 (Windows NT 6 ...

  4. webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?

    资源相对引用路径 问题描述 一般情况下,通过webpack+vuecli默认打包的css.js等资源,路径都是绝对的. 但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static ...

  5. Oracle扩展的统计信息

    我们在收集列的统计信息与直方图时,往往都是对某一列的收集.当谓词使用多个相关列时,会导致约束条件的冗余.这几个相关的列也被称作关联列.出现这种情况时,查询优化器也会做出不准确的判断.所以我们必须对这些 ...

  6. 局域网内Ping不通

    局域网ping不通, 原来不可忽视这步......... 通常,经常在局域网里面,为了检测网络是否顺畅,都会ping一下IP,如果网络正常,就可以上网或者远程处理其他故障.但是会出现ping别人的主机 ...

  7. dubbo基础学习总结

    Dubbo基本原理机制 分布式服务框架: –高性能和透明化的RPC远程服务调用方案 –SOA服务治理方案 -Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接 Dubbo缺省 ...

  8. 我的第一个Angular2应用

    1需要具备的基本前端基础:HTML.CSS.JavaScript.为了实现对项目包的管理,推荐使用npm NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题:官网先下 ...

  9. go-ethereum源码分析 PartIII 共识流程

    A: js指令转化为新transaction 在web3上操作流程 1. import to web3 2. connect to peers 3. read local key store 4. d ...

  10. 使用eclipse新建一个c项目

    一.打开eclipse并新建项目 1.快捷键:字体放大:Ctrl+Shift+“+” 字体缩小:Ctrl+“-”