精华内容
下载资源
问答
  • 查看core文件方法

    千次阅读 2012-07-18 10:38:33
    先执行 file core 确定core是那个程序产生的 在linux环境  gdb ./程序名 ./core AIX环境 dbx ./程序名 ./core

    先执行
    file  core
    确定core是那个程序产生的

    在linux环境 
    gdb ./程序名 ./core


    AIX环境
    dbx ./程序名 ./core
    展开全文
  • Unix core文件查看方法

    2012-07-05 23:15:49
    Unix core文件查看方法 在Unix系统下,应用程序崩溃,(函数出错时写入errno)一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的,本文对此做简单介绍。 例如,一个...

    Unix core文件查看方法

    在Unix系统下,应用程序崩溃,(函数出错时写入errno)一般会产生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行,基于此,我们就可以有针对性的找到问题的根源,并加以解决。

    展开全文
  • jvm出core查看方法

    2021-03-04 14:49:22
    jvm出core的时候,查看方式,可以用gdb,也可以用jstack和jmap https://cloud.tencent.com/developer/article/1407569 https://www.jianshu.com/p/559f939d7931 gdb调试时的问题Missing separate debuginfos, use:...

    jvm出core的时候,查看方式,可以用gdb,也可以用jstack和jmap
    https://cloud.tencent.com/developer/article/1407569
    https://www.jianshu.com/p/559f939d7931


    gdb调试时的问题Missing separate debuginfos, use: debuginfo-install glibc-XXX
    https://blog.csdn.net/testcs_dn/article/details/19565411

    展开全文
  • core dump叫做核心转储,当程序运行过程中发生异常的那一刻的一个内存快照,操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个core文件里...

    在Linux下可通过core文件来获取当程序异常退出(如异常信号SIGSEGV, SIGABRT等)时的堆栈信息。core dump叫做核心转储,当程序运行过程中发生异常的那一刻的一个内存快照,操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个core文件里,叫core dump。core文件是程序非法执行后core dump后产生的文件,该文件是二进制文件,可以使用gdb、elfdump、objdump打开分析里面的具体内容。

    产生core dump的可能原因:(1). 内存访问越界;(2). 多线程程序使用了线程不安全的函数;(3). 多线程读写的数据未加锁保护;(4). 非法指针;(5). 堆栈溢出。

    查看操作系统是否开启产生core文件:输入命令:ulimit -c或ulimit -a, core file size为0,说明系统关闭了core dump,可通过命令:ulimit -c unlimited来打开,结果如下图所示,注:此设置只对当前终端有效,再打开一个新的终端时,输入ulimit -a,会发现core file size还是为0,若想始终有效,可在~/.bashrc文件最后加入命令:ulimit -c unlimited:

    在Linux下执行程序时如果有提示”core dumped”信息,则会在当前目录下产生一个core文件,若没有产生,则可能core dump没有打开。缺省情况下,内核在core dump时所产生的core文件放在与执行程序相同的目录中,并且文件名固定为core,执行以下命令,可以将文件名修改为core.pid等形式,pid为执行当前程序的进程号,core_uses_pid中原始内容为0:

    echo "1" > /proc/sys/kernel/core_uses_pid

    测试代码main.cpp如下:

    #include <stdio.h>
    #include <iostream>
    
    namespace {
    
    void func() {
    	const char* p = "hello";
    	delete p;
    }
    
    } // namespace
    
    int main()
    {
    	fprintf(stdout, "test start\n");
    	func();
    	fprintf(stdout, "test finish\n");
    }

    依次执行如下命令,执行结果如下图所示,会在执行文件同一目录下产生core二进制文件:

    g++ -g -o main main.cpp
    ./main

    如果有多个程序产生core文件,或者同一个程序多次崩溃,就会重复覆盖同一个core文件。通过修改kernel参数,可以指定内核所生成的core dump文件的文件名,如设置core文件名形式为core_programname_time_pid,所有的core文件存放在/usr/core_log目录下,则在终端输入以下命令:

    echo /usr/core_log/core_%e_%t_%p >> /proc/sys/kernel/core_pattern

    通过gdb打开core文件:形式如下:$ gdb programname core,查看core dump时的堆栈信息,可以使用bt或where命令,如下图所示,注:在编译程序时加上-g选项才能够获取到具体的信息:

    通过gdb help generate-core-file产生core文件,依次执行如下命令,执行结果如下图所示,产生的core.pid好像不如上面方法产生的core文件信息详细:

    gdb main
    help generate-core-file
    start
    generate-core-file

    以上内容主要参考:

    1. https://blog.csdn.net/u014403008/article/details/54174109

    2. https://blog.csdn.net/ithomer/article/details/5945152

    GitHubhttps://github.com//fengbingchun/Messy_Test

    展开全文
  • 生成core文件方法

    2020-09-04 18:09:26
    1、命令ulimit -a查看当前进程限制,命令ulimit -c 1024调整core file size大小为1024 当然也可以调整为unlimited. ...3、查看core文件生成目录cat /home/filan/桌面/C++/core-%s-%e" > /proc/sys/
  • coredump使用方法

    2012-09-12 10:02:48
    Linux系统下程序出错时会自动生成一个core文件,该文件包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。...ulimit –c (查看core dump文件的大小,一般开始是0) 0 (表示coredump开...
  • cat /proc/sys/kernel/core_pattern 触发coredump文件生成的方法是: kill -11 <pid of a process>
  • linux下core文件调试方法

    千次阅读 2014-06-06 14:36:36
    使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 ...
  • Linux下core文件调试方法

    千次阅读 2013-11-22 15:07:46
    Linux下core文件调试方法 ... 在程序不寻常退出时,内核会在当前工作目录下生成一个...使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。 1.core文件的生成开关和大小限制  1)使用ulim
  • Core Dump 调试方法

    2016-06-11 01:42:00
    今天调试一个程序, 用到了core dump, 于是写出来, 记于此.什么是Core Dump?... 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以...
  • Coredump调试方法

    2017-05-01 18:05:46
     1. 想要调试coredump程序,需要先保证程序crash时能生成coredump文件。导致coredump文件无法...[root@WORK /]# ulimit -c ---查看文件限制设置情况 unlimited [root@WORK /]# ulimit -c 256000000 ---指定
  • unix下查看core文件

    千次阅读 2011-07-13 21:20:06
    方法一:从接触unix开始就一直听到和遇到core dump,特别是刚学着使用C语言在AIX下编写程序的时候,core dump更是时不时就会不请自来。记得当时刚写应用的时候,提交程序时最怕的就是在运行过程时遇到core dump,...
  • gdb调试core文件的方法

    2020-06-23 00:48:11
    1.什么是core文件? 有问题的程序运行后,产生...①使用 ulimit -c 查看core开关,如果为0表示关闭,不会生成core文件; ②使用 ulimit -c [filesize] 设置core文件大小,当最小设置为4之后才会生成core文件; ...
  • 查看已安装的包:dpkg --list 查看正则匹配的包:dpkg --list 'dotnet-*' //查看以dotnet-开头的包 卸载匹配的包:sudo apt-get --purge remove <programname> 按照正则卸载匹配的包:sudo apt-get --purge ...
  • gdb 调试COREDUMP方法

    千次阅读 2018-09-26 15:58:37
    COREDUMP是NE进程的内存现场, 其中包含了出现NE时的局部变量, 全局变量等信息, 这些信息有助于我们结合代码分析问题。 gdb路径 :prebuilts/gdb/linux-x86/bin/gdb 建议在源码根目录下执行, 可以通过gdb查看源码...
  • 前言 有时候程序会异常退出而不带任何日志,此时就可以使用 code 文件进行分析,它会记录程序运行的内存,寄存器,堆栈指针等信息 ...查看当前 core 文件的状态 $ ulimit -a ... -c: core file size (blo
  • coredump设置方法

    2015-03-26 16:02:33
    1. 内核转储(coredump)作用 (1) 内核转储的最大好处是能够保存问题发生时的状态。 (2) 只要有可执行文件和内核转储,就可以知道进程当时的状态。 (3) 只要获取内核转储,那么即使没有复现环境,也能调试。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,583
精华内容 633
关键字:

查看core方法