Linux环境下程序core掉了

(1)

Core的概念:当程序运行的过程中异常终止崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump

(2)

Core的作用:关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。core dump 对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而 core dump 文件可以再现程序出错时的情景。通过gdb看出程序挂再哪里,分析前后的变量,找出问题的原因。

(3)

产生core的信号:SIGQUIT,SIGILL,SIGABRT,SIGSEGV,SIGTRAP。

生成core的情景:kill -9(信号:SIGKILL),ctrl+\(信号:SIGQUIT),还有abort()函数,访问内存错误,

注意:当ctrl + z 或者让 ctrl + c时候,程序不会产生core。因为信号为SIGTSTP(默认操作:暂停进程)或者SIGINT(默认操作:中止进程)。

 

(4)Linux下调试core dump使用方法

Step1:加上-g 调试

Step2:: 打开core dump

Step3:

gdb program core

program为可执行程序名,core为生成的core文件。

使用GDB,先从可执行文件中读取符号表信息,然后读取Core文件。如果不与可执行文件搅合在一起可以吗?答案是不行,因为Core文件中没有符号表信息。

参考资料:

https://www.cnblogs.com/Anker/p/6079580.html

 

 

 

 

你可能感兴趣的:(linux,C++)