问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

如何查看core文件

提问网友 发布时间:2022-04-21 02:10
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
2个回答
热心网友 回答时间:2022-04-08 10:53
在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的,本文对此做简单介绍。

例如,一个程序cmm_test_tool在运行的时候发生了错误,并生成了一个core文件,如下:

-rw-r–r– 1 root cmm_test_tool.c
-rw-r–r– 1 root
cmm_test_tool.o
-rwxr-xr-x 1 root cmm_test_tool
-rw——- 1 root
core.19344
-rw——- 1 root core.19351
-rw-r–r– 1 root
cmm_test_tool.cfg
-rw-r–r– 1 root cmm_test_tool.res
-rw-r–r– 1 root
cmm_test_tool.log
[root@AUTOTEST_SIM2 mam2cm]#

就可以利用命令gdb进行查找,参数一是应用程序的名称,参数二是core文件,运行
gdb
cmm_test_tool core.19344结果如下:

[root@AUTOTEST_SIM2 mam2cm]# gdb cmm_test_tool core.19344
GNU gdb Red Hat
Linux (5.2.1-4)
Copyright 2002 Free Software Foundation, Inc.
GDB is free
software, covered by the GNU General Public License, and you are
welcome to
change it and/or distribute copies of it under certain conditions.
Type “show
copying” to see the conditions.
There is absolutely no warranty for GDB. Type
“show warranty” for details.
This GDB was configured as
“i386-redhat-linux”…
Core was generated by `./cmm_test_tool’.
Program
terminated with signal 11, Segmentation fault.
Reading symbols from
/lib/i686/libpthread.so.0…done.
Loaded symbols for
/lib/i686/libpthread.so.0
Reading symbols from
/lib/i686/libm.so.6…done.
Loaded symbols for /lib/i686/libm.so.6
Reading
symbols from /usr/lib/libz.so.1…done.
Loaded symbols for
/usr/lib/libz.so.1
Reading symbols from
/usr/lib/libstdc++.so.5…done.
Loaded symbols for
/usr/lib/libstdc++.so.5
Reading symbols from
/lib/i686/libc.so.6…done.
Loaded symbols for /lib/i686/libc.so.6
Reading
symbols from /lib/libgcc_s.so.1…done.
Loaded symbols for
/lib/libgcc_s.so.1
Reading symbols from /lib/ld-linux.so.2…done.
Loaded
symbols for /lib/ld-linux.so.2
Reading symbols from
/lib/libnss_files.so.2…done.
Loaded symbols for /lib/libnss_files.so.2
#0
0×4202cec1 in __strtoul_internal () from
/lib/i686/libc.so.6
(gdb)

进入gdb提示符,输入where,找到错误发生的位置和堆栈,如下:

(gdb) where
#0 0×4202cec1 in __strtoul_internal () from
/lib/i686/libc.so.6
#1 0×4202d4e7 in strtoul () from
/lib/i686/libc.so.6
#2 0×0804b4da in GetMaxIDFromDB (get_type=2,
max_id=0×806fd20) at cmm_test_tool.c:788
#3 0×0804b9d7 in ConstrctVODProgram
(vod_program=0×40345bdc) at cmm_test_tool.c:946
#4 0×0804a2f4 in
TVRequestThread (arg=0×0) at cmm_test_tool.c:372
#5 0×40021941 in
pthread_start_thread () from /lib/i686/libpthread.so.0
(gdb)

至此,可以看出文件出错的位置是函数 GetMaxIDFromDB
,两个参数分别是2和0×806fd20,这个函数位于源代码的788行,基于此,我们就可以有针对性的找到问题的根源,并加以解决。
热心网友 回答时间:2022-04-08 12:11
从接触unix开始就一直听到和遇到core mp,特别是刚学着使用C语言在AIX下编写程序的时候,core mp更是时不时就会不请自来。记得当时刚写应用的时候,提交程序时最怕的就是在运行过程时遇到core mp,对于银行核心系统,特别是使用静态应用进程,如果一个相对频繁一点的交易导致core mp,那么毫无疑问,除了赶紧定位错误改程序外,重启进程甚至无法争取到多少缓冲的时间来进行代码的更正和测试。而且往往导致core mp的,就是程序中一个小小的未注意到或者未测试到的一个疏忽。

虽然常常遇到core mp,不过很长时间内,都是出于知道这个名字,知道它导致的后果,知道一部分导致它出现的原因,其他的就都不甚了了了。说起来,就是自己太懒了,懒得看书......少壮不努力啊。看过一则统计,说60岁以上的老人,超过70%都后悔少壮不努力,不知统计的数据能否反映整个社会的情况。不过总的来说,这句古话还是有些道理的。大家不要学我。哈哈

core mp,翻译过来讲,就是核心转储。大致上就是指,如果由于应用错误,如浮点异常、指令异常等,操作系统将会转入内核的异常处理,向对应的进程发送特定的信号(SIGNAL),如果进程中没有对这些信号进行处理,就会转入默认的处理,core mp就是其中的一种。如果进程core mp,系统将会终止该进程,同时系统会产生core文件,以供调试使用。这个core文件其实就是内存的映像,即进程执行的时候内存的内容,也就是所谓的core mp。平常大家说某某进程core mp了,其实主要的意思就是说:某某进程因为错误而被系统自动终止了。

AIX上提供了dbx工具可以对core mp进行调试,协助定位引起core mp的代码。最普通的语法是:
dbx 应用名 core文件, 然后使用where命令来显示调试信息
一般来讲,根据工作中遇到的情况,dbx还是能够比较轻松的根据提示的内容来定位代码的。不过也有一些特殊情况时,dbx显示的调试信息过于模糊或者不直观,这个时候就只能根据经验来逐步定位了。有时定位起来会耗用相当长的时间。遇到这种情况时,使用日志文件,通过在代码中穿插多个写log的语句,也可以协助发现。因为进程core mp时,日志当然也中断了,根据日志在哪个代码行之后或之前中止了,可以有效缩小寻找的范围。甚至,在有些情况下,使用日志定位是唯一简便的方法了。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

linux 找出当前用户主目录下所有的.core文件 如何查询和修改Linux操作系统生成core dump文件的默认路径 新买的汽车,味道挺大的,新车除味用什么好呢? 新车放什么水果除甲醛最好的选择 什么水果放在车里除味 最天然的新车除味“土法子”? 新车用什么除异味快 昨天剁的饺子馅,今天有一点点发酸,能吃吗 饺子昨天煮的 今天中午吃好像有点酸味 还可以吃吗? 韭菜肉馅儿放冰箱里一晚上用保鲜膜罩的第二天用来包饺子可以吗? 饺子馅有酸味是否能吃 饺子馅有点酸了还能吃吗 饺子皮酸了可以吃吗? 饺子馅调出来放置那儿有几天了,突然拿出来有点儿发酸,还能吃吗? 40岁持有会计师和税务师证书的人未来有什么出路? 税务师含金量 什么是税务师有什么用? 手握税务师证书,我该如何就业 四十岁持有税务师证书无经验可以找到什么样的工作? 考税务师证有什么用?能干什么工作啊? 找出当前用户主目录下的.core文件,按文件大小排序,将其中3个文件删除,其他文件移至temp文 怎么查看Linux的core开关,以及如何打开和关闭 linux 怎么分析core文件 linux内核产生的core文件怎么看 请教如何查看core文件是哪个程序产生的 linux core 文件,如何看在哪断掉的 corefile是什么文件夹? linux查看进程内存占用情况linux查看进程使用内存 如何根据core文件中错误地址定位程序 linux net core dll 服务 怎么再次打开 linux上的core文件,麻烦牛人们帮忙解释下是什么原因 linux ls 显示core.xxxx linux下java dump文件在哪儿 linux core 怎么打开 linux中重要文件夹介绍?各个文件夹各有什么作用? 鸡肉怎么煮才会嫩 怎样煮鸡肉又嫩又好吃 鸡肉想做得比较嫩,具体都知道哪些好的做法? 鸡肉怎么烧才嫩才好吃 404 Not Found
Top