(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环境下,当程序异常终止或崩溃时产生的Core Dump概念,强调了其在调试中的重要作用。讨论了导致Core Dump的信号,如SIGQUIT、SIGABRT等,并指出SIGTSTP和SIGINT不会产生Core。最后,概述了使用GDB进行Core Dump调试的步骤,强调了Core文件必须与可执行程序结合使用才能有效分析。
3688

被折叠的 条评论
为什么被折叠?



