整理:Wilbur Lang
何谓 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 吧!)。
我可以把 core 文件删掉吗?
如果你不会、不能、不需要修改程序,那就放心地把它删除了吧!
要怎麽才不会让 core 文件出现?
如果用的是tcsh的话, 以试著在 .tcshrc 里加一行:
limit coredumpsize 0
如果用的是bash的话, 在/etc/profile里加上(或者修改)一条:
ulimit -c 0
有一招, 可以让你看出 core 最好用的地方 :)
gdb -c core, 进去後打 where, 就可以 show 出你是在程序哪一行当掉的, 还有在当掉时在哪个 function 里, 这个 function 是被哪个 function 所 call 的, 而这个 function 又是被哪个 function 所 call 的.... 一直到 main()
由这个信息, 可以找出五六成的 bug........ 屡试不爽
但, 先决条件, 当你在 compile 时必须把 debug information 的选项打开 不然, 就会出现一大堆你看不懂的东西,而不是你喜欢的源程序。
分享到:
相关推荐
在Linux环境下,当一个程序因为某种原因(如段错误)而崩溃时,系统可以自动为该程序创建一个名为“core dump”的文件。这个文件包含了程序崩溃时内存的快照,可用于后续分析问题的原因。在本文档中,我们将详细探讨...
对于开发人员来说,通过分析 core dump 文件可以帮助他们定位并解决导致程序崩溃的问题。 在 Linux 系统中,特别是 Ubuntu 发行版里,当一个程序由于内存错误或非法操作而崩溃时,可以通过 core dump 文件进行离线...
Linux 操作系统是当今最流行的操作系统之一,然而,Linux 系统调用 Core Dump 漏洞攻击的出现却给系统安全带来了巨大的威胁。 Core Dump 漏洞是 Linux 内核 2.6.15-2.6.17 中存在的一种漏洞,可以引发拒绝服务攻击...
`coredump`是Linux系统中一种非常有用的故障排查工具,它记录了进程崩溃时的内存快照,可以帮助开发者分析程序错误的原因。本篇文章将围绕`coredump`分析进行入门讲解,结合实例深入探讨如何利用`coredump`来解决...
在Windows操作系统上,生成Coredump文件对于调试和分析C++程序崩溃原因至关重要。Coredump文件包含了程序崩溃时内存中的关键信息,如进程的内存映射、全局变量、堆栈信息等,使得开发者能够定位到问题的具体位置,...
Core Dump 文件的产生是由于进程收到某个信号的时候,Linux 上现在大概有 60 多个信号,可以使用 kill -l 命令全部列出来。常见的信号包括 SIGSEGV、SIGILL、SIGFPE、SIGBUS 等。这些信号通常是由于数组越界、空指针...
GDB(GNU Debugger)是一个功能强大的程序调试工具,它用于C/C++等程序的调试。通过GDB可以执行以下操作:启动程序、设置断点、...GDB是一个非常强大的调试工具,熟练使用GDB可以极大地提高程序开发和问题定位的效率。
### Linux下产生Core Dump文件及使用GDB调试详解 #### 一、Core文件的基本概念与作用 当一个程序因为某些原因而崩溃时,系统内核会自动创建一个名为`core`的文件,这个文件包含了程序崩溃时刻的内存映像以及其他...
课程内容专注于如何通过核心转储(core dump)分析来找出Linux应用程序中的问题,并帮助开发者进行故障排除。核心转储是当程序由于某些原因异常终止时,操作系统生成的一个包含了程序运行时内存映像的文件。通过分析...
通过分析 coredump 文件,开发人员可以深入了解程序崩溃的原因,这对于调试和修复程序错误至关重要。 #### 二、产生 Coredump 的常见情况 1. **用户手动触发**:在终端中使用 `ctrl+\` 向进程发送 SIGQUIT 信号,...
core dump是操作系统在程序异常终止时生成的一种文件,它包含了程序崩溃时的内存状态和调试信息。以下是对core dump调试方法的详细说明: 1. **获取gdb调试工具** 在大多数Linux系统中,gdb(GNU Debugger)已经...
core dump对于软件开发和维护非常重要,它能帮助开发者快速定位程序异常的原因。了解如何开启、控制和使用core文件,以及通过GDB进行调试,是每个Linux程序员必备的技能。在实际操作中,根据需要选择合适的core文件...
在Linux系统中,当进程异常终止时,...理解coredump的生成、配置以及使用gdb进行分析,是每个Linux开发者必备的技能之一。在遇到进程崩溃时,利用这些知识,可以迅速找出问题,减少故障排查的时间成本,提升开发效率。
在 Linux 系统中,可以通过修改 `/proc/sys/kernel/core_pattern` 来设置核心 dump 的路径和格式,而 `ulimit -c` 命令可以设置单个进程的最大核心 dump 大小。 三、核心 dump 的用途 1. 故障排查:核心 dump 提供...
gdb调试详解 GDB(GNU Debugger)是一款功能强大的调试工具,广泛应用于Linux平台。通过GDB,可以轻松地调试程序,检查...通过GDB和Core Dump文件,可以快速地定位和解决程序崩溃的问题,从而提高开发效率和程序质量。
总之,理解如何在Linux中生成和分析core dump文件是软件开发者必备的技能之一。它可以帮助我们快速定位程序中的错误,特别是那些难以复现的问题。通过熟练运用`ulimit`和GDB,我们可以更有效地调试和修复代码,提升...
1、前言 一直在从事linux下后台开发,经常与core文件打交道。还记得刚开始从事linux下开发时,程序突然崩溃...今天在ngnix的源码时候,发现可以在程序中设置core dump,又是怎么回事呢?在公司发现生成的core文件都带
该书主要介绍Linux系统中核心转储(core dump)的模式和实践方法,适用于具有一定软件开发和基础故障排查经验的读者,同时也假定读者熟悉十六进制记数法和至少一种编程语言的源代码阅读。能够阅读汇编语言是一个加分...
2. **核心转储(core dump)**:当Linux程序异常终止时,操作系统可选择生成core dump文件,该文件包含了程序崩溃时的内存映像,包括所有已加载的模块、堆栈信息和全局变量等,用于调试和故障分析。 3. **Linux运维...