免责声明

易百易数码科技

gdb调试core,gdb调试core文件命令(gdb调试core文件详解)(怎么打开core文件)

如何非交互方式使用GDB打印core文件堆栈

比方说,你要调试的core文件是core.xxx,原始可执行文件是a.exe先用gdba.exe进入gdb,在gdb命令行下执行core-file/path/to/core.xxx然后即可调试coredump文件了,比如用bt等

怎么打开core文件

core文件是由应用程序收到系统信号后崩溃产生的,该文件中记录了程序崩溃的原因(例如收到那种信号),调用堆栈和崩溃时的内存及变量值等等的信息。

gdb调试core,gdb调试core文件命令(gdb调试core文件详解)(怎么打开core文件)-图1

打开core文件与编译时使用的编译器有关,但绝大多数linux程序是使用gcc编译器编译的,因此可使用对应gdb调试器打开,命令格式如下: $ gdb 应用程序文件名 core文件名 举例: $ gdb /usr/bin/gedit ~/core ------ 查看由gedit崩溃产生的core文件 (gdb) bt ------ 或者backtrace, 查看程序运行到当前位置之前所有的堆栈帧情况) (gdb) quit ------ 退出 如果不知道core文件由哪个文件产生的,可使用file命令显示 $ file cor

核心已转储,是什么意思?该怎么解决

------解决方案--------------------------------------------------------探讨core dump 通常是因为SEGMENT FAULT, 一般是访问越界引起的。

------解决方案--------------------------------------------------------段错误 一般是非法访问内存造成的 核心已转储 (core dump) -- 内存清除,早期的内存用磁芯存储器 ------解决方案-------------------------------------------------------- 通常是指针、内存等错误; 错误会存储到coredump文件,用gdb等工具可对coredump文件分析,定位错误发生的位置; ------解决方案-------------------------------------------------------- 进程意外退出会在当前目录下产生形如‘core.数字’的文件比如‘core.1234’使用命令gdb 运行程序名 core.数字 进入gdb然后使用bt命令 可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。------解决方案-------------------------------------------------------- IT人都叫这个“出core了”。

核心已转储,是什么意思

核心文件核心文件(corefile),也称核心转储(coredump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。

gdb调试core,gdb调试core文件命令(gdb调试core文件详解)(怎么打开core文件)-图2

这种信息往往用于调试。核心文件一词来源于磁芯内存(corememory)。核心转储通常这个词的含义是一个动作,这个动作在系统收到特定的信号时由操作系统完成。

信号可以由程序执行过程中的异常触发,也可以由外部程序发送。

动作的结果一般是生成一个某个进程的内存转储的文件,文件包含了此进程当前的运行堆栈信息。

gdb调试core,gdb调试core文件命令(gdb调试core文件详解)(怎么打开core文件)-图3

程序自身产生的coredump文件一般可以用来分析程序运行到哪里出错了。Linux平台常用的coredump文件分析工具是gdb;Solaris平台用pstack和pflags;Windows平台用userdump和windbg。

外部程序触发的dump一般用来分析进程的运行情况,比如分析内存使用/线程状态等。

Solaris的常用内存分析工具umem就是需要先通过gcorepid得到coredump的文件然后继续分析内存情况。

到此,以上就是小编对于gdb core文件调试的问题就介绍到这了,希望介绍的4点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

分享:
扫描分享到社交APP
上一篇
下一篇