core dump解析(2)

何谓 core? 
       在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明 者为王安),线圈就叫作 core ,用线圈做的内存就叫作 core memory。如今 ,半导体工业澎勃发展,已经没有人用 core memory 了,不过,在许多情况下, 人们还是把记忆体叫作 core 。 
        何谓 core dump? 
        我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 dump 出来(现在通常是写在一个叫 core 的 file 里面),让 我们或是 debugger 做为参考。这个动作就叫作 core dump。 
       为何会发生 core dump? 
       前面说过,在程序当掉时出错。在 C/C++语言中,最常发生错误的地方就是指 针有问题。您可以利用 core 文件和 debugger 把错误找出来(要怎麽在 debugger 中使用 core 文件?man 一下 gdb 吧!)。
       如何用gdb调用core?

当c编写的程序出现core是,可以用gdb programname core,查看core。如果找不到core文件,可以用一下命令查看和修改。

ulimit -a  //查看core文件的大小

ulimit -c  //修改core文件的大小

如果gdb -c core 时遇到一下情况:

#0 0x08048373 in ?? ()

#1 0xbfffd8f8 in ?? ()

#2 0x0804839e in ?? ()

#3 0xb74cc6b3 in ?? ()

#4 0x00000000 in ?? ()

请用以下方法解决:gdb ./a.out core 然后bt就可以了。

除了bt以外还有如下命令:where, frame, up, down, print可以使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解析coredump是计算机程序出错后生成的一种内存转储文件,用于分析程序运行时的状态。当你遇到程序崩溃或异常退出时,操作系统可能会创建一个coredump文件来帮助开发者定位问题。下面是解析coredump的基本步骤: 1. **获取coredump文件**:首先,你需要找到生成的coredump文件,通常它的名字会包含"core"、"coredump"等字样,并有一个随机数字标识。 2. **确定核心转储类型和平台**:coredump可能有不同的格式,如Linux core dumps(通常为`.core`或`.backtrace`)、Windows minidumps(`.dmp`)等,要根据你的系统选择相应的工具。 3. **检查权限**:有些核心转储可能需要特定权限才能查看,确保你有足够的权限去打开和分析。 4. **使用工具进行分析**: - **Linux**:gdb(GNU调试器)是最常用的工具。使用命令行启动`gdb`, 输入`file corefile`加载核心文件,然后执行`bt`命令查看堆栈跟踪(backtrace)。 - **Windows**:WinDbg或Visual Studio Debugger也可以用来分析minidump。在WinDbg中,`!analyze -v`是一个常用命令。 5. **理解日志信息**:分析过程中会显示线程状态、调用堆栈、内存地址、寄存器值、以及可能导致错误的代码行等信息。 6. **重现错误**:基于核心转储中的线索,尝试复现错误条件,以便更好地理解和修复问题。 7. **问题诊断**:对比代码和转储信息,找出导致崩溃的原因,可能是空指针引用、数组越界、资源泄漏等问题。 8. **修复并验证**:修复问题后,重新编译和运行程序,确认问题已解决,如果可能的话,再次生成coredump以确认问题已被解决。 如果你对某个特定的编程语言或框架使用的核心转储分析有疑问,记得提供额外的相关问题:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值