精华内容
下载资源
问答
  • 段错误(吐核)
    2020-11-19 17:53:14

    今天自己敲了个子网段转子网掩码的小工具代码段中出现了一个段错误的问题,最后发现是定义指针类的字符串 char str,没有对str分配空间
    p = (char
    )malloc(sizeof(char))

    更多相关内容
  • 一、段错误的形式:  在编程中以下几类做法容易导致段错误,基本上是错误地使用指针引起的。 1)访问系统数据区,尤其是往系统保护的内存地址写数据最常见就是给一个指针以0地址。 2)内存越界(数组越界,变量类型...

    一、段错误的形式:       

    在编程中以下几类做法容易导致段错误,基本上是错误地使用指针引起的。

    1)访问系统数据区,尤其是往系统保护的内存地址写数据最常见就是给一个指针以0地址。

    2)内存越界(数组越界,变量类型不一致等): 访问到不属于你的内存区域。

    解决方法:我们在用C/C++语言写程序的时候,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问越界的错误谈谈如何快速定位这些"段错误"的语句。

    二、下面将就以下的一个存在段错误的程序介绍几种调试方法:

    test的代码如下:

    [root@localhost TEST]# cat test.c -n
         1	#include <stdio.h>
         2	int main(void)
         3	{
         4		printf("111");
         5		printf("222");
         6		int *ptr = NULL;
         7		*ptr = 1;
         8	}
    

    1)使用命令    gcc -g -rdynamic test.c 然后gdb调试

    [root@localhost TEST]# gcc -g -rdynamic test.c 
    

     1.1)查找段错误:
    这种方法也是被大众所熟知并广泛采用的方法,首先我们需要一个带有调试信息的可执行程序,所以我们加上“-g -rdynamic"的参数进行编译,然后用gdb调试运行这个新编译的程序,具体步骤如下:

    [root@localhost TEST]# gcc -g -rdynamic test.c 
    [root@localhost TEST]# gdb  ./a.out 
    GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-80.el7
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-redhat-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /root/桌面/TEST/a.out...done.
    (gdb) r
    Starting program: /root/桌面/TEST/./a.out 
    
    Program received signal SIGSEGV, Segmentation fault.
    0x00000000004007d2 in main () at test.c:7
    7		*ptr = 1;
    Missing separate debuginfos, use: debuginfo-install glibc-2.17-105.el7.x86_64
    (gdb) 
    

    不用一步步调试我们就找到了出错位置d.c文件的第4行,其实就是如此的简单。

    从这里我们还发现进程是由于收到了SIGSEGV信号而结束的。通过进一步的查阅文档(man 7 signal),我们知道SIGSEGV默认handler的动作是打印”段错误"的出错信息,并产生Core文件,由此我们又产生了方法二。

    2)使用命令   ulimit 命令

     1.1)查找段错误:

    [root@localhost TEST]# ulimit -c
    0
    [root@localhost TEST]# ulimit -c 1000
    [root@localhost TEST]# ./a.out 
    段错误(吐核)
    [root@localhost TEST]# ls
    a.out  core.15180  test  test.c
    [root@localhost TEST]# gdb ./a.out core.15180 
    GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-80.el7
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-redhat-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /root/桌面/TEST/a.out...done.
    [New LWP 15180]
    Core was generated by `./a.out'.
    Program terminated with signal 11, Segmentation fault.
    #0  0x00000000004007d2 in main () at test.c:7
    7		*ptr = 1;
    Missing separate debuginfos, use: debuginfo-install glibc-2.17-105.el7.x86_64
    

     

    展开全文
  • linux调试段错误吐核)设置

    千次阅读 2019-08-22 15:58:53
    为了解决这个问题,我们可以设置段错误吐核。 这种设置有两种 一种是当前shell有效,另一种是永久有效。 第一种当前shell有效: 首先 ulimit -a查看是否设置段错误吐核,如下图中core file size大小为0,这是...

    linux编译c/c+程序会出现段错误,单单是出现段错误什么也没留下的话,调试就比较麻烦。

    为了解决这个问题,我们可以设置段错误吐核。

    这种设置有两种

    一种是当前shell有效,另一种是永久有效。

    第一种当前shell有效:

    首先

    ulimit -a查看是否设置段错误吐核,如下图中core file size大小为0,这是属于没设置吐核的 

    ulimit -c 100设置吐核文件大小上限为100k,这个是临时有效,退出shell就无效了

    第二种永久有效:

    编辑.profile文件在里面加入ulimit -c unlimited是修改立即生效(或者重启后生效),然后查看ulimit -a

    vi ~/.profile

    ulimit -c unlimited

    source ~/.profile

    ulimit -a

     

    查看生成core,如下图:

    上图中core没有编号,新生成的core会把他覆盖掉

    执行 echo 1 > /proc/sys/kernel/core_uses_pid如下图,如果没有权限就使用root:

    生成带编号的core,生成再多的core都不会覆盖其他的core,如下图:

    展开全文
  • 少打了好多内容: 段错误(吐核) 以下是运行与错误提示过程: [hl@localhost ~]$ iceplayer Welcome! Version=:4.04-20110508 Debug:init one-instance Debug:init gtk & gst Debug:初始化环境 Debug:初始化配置 ...

    oohyoou 于 2011-05-30 21:46:24发表:

    7# alick

    bug仍未解决。

    alick 于 2011-05-22 00:09:17发表:

    这问题应该报告给开发者。估计代码中有bug

    oohyoou 于 2011-05-21 19:01:51发表:

    5# breakbrain

    [hl@localhost osd-lyrics-read-only]$ ldd /usr/bin/iceplayer

    linux-gate.so.1 => (0x00ca3000)

    libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x41947000)

    libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x41df1000)

    libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x41682000)

    libgio-2.0.so.0 => /lib/libgio-2.0.so.0 (0x410e9000)

    libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x41581000)

    libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x41573000)

    libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x4137a000)

    libpng12.so.0 => /usr/lib/libpng12.so.0 (0x41234000)

    libm.so.6 => /lib/libm.so.6 (0x4fd4a000)

    libcairo.so.2 => /usr/lib/libcairo.so.2 (0x415c3000)

    libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x416a3000)

    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x412de000)

    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x4139f000)

    libgobject-2.0.so.0 => /lib/libgobject-2.0.so.0 (0x4108c000)

    libgmodule-2.0.so.0 => /lib/libgmodule-2.0.so.0 (0x410dc000)

    libgthread-2.0.so.0 => /lib/libgthread-2.0.so.0 (0x41072000)

    librt.so.1 => /lib/librt.so.1 (0x4fd77000)

    libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x4fdda000)

    libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0 (0x42cd3000)

    libxml2.so.2 => /usr/lib/libxml2.so.2 (0x41774000)

    libX11.so.6 => /usr/lib/libX11.so.6 (0x4ff32000)

    libnotify.so.1 => /usr/lib/libnotify.so.1 (0x4102e000)

    libpthread.so.0 => /lib/libpthread.so.0 (0x4fd26000)

    libc.so.6 => /lib/libc.so.6 (0x4fb94000)

    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x415bc000)

    libXext.so.6 => /usr/lib/libXext.so.6 (0x41079000)

    libXrender.so.1 => /usr/lib/libXrender.so.1 (0x413e6000)

    libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x4146f000)

    libXi.so.6 => /usr/lib/libXi.so.6 (0x413d5000)

    libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x41564000)

    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x415b0000)

    libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x4156e000)

    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x4167d000)

    libdl.so.2 => /lib/libdl.so.2 (0x4fd43000)

    libresolv.so.2 => /lib/libresolv.so.2 (0x4fef5000)

    libz.so.1 => /lib/libz.so.1 (0x4fda1000)

    libselinux.so.1 => /lib/libselinux.so.1 (0x4fdb9000)

    /lib/ld-linux.so.2 (0x4fb70000)

    libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x413f2000)

    libexpat.so.1 => /lib/libexpat.so.1 (0x41269000)

    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x4ff12000)

    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4fd82000)

    libdbus-glib-1.so.2 => /usr/lib/libdbus-glib-1.so.2 (0x4174d000)

    libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x41293000)

    libXau.so.6 => /usr/lib/libXau.so.6 (0x4106d000)

    链接应该没问题吧。。都找了。

    breakbrain 于 2011-05-21 17:58:24发表:

    # ldd iceplayer

    有什么?

    oohyoou 于 2011-05-19 14:05:17发表:

    2# alick

    不好意思。。。少打了好多内容:

    段错误(吐核)

    以下是运行与错误提示过程:

    [hl@localhost ~]$ iceplayer

    Welcome! Version=:4.04-20110508

    Debug:init one-instance

    Debug:init gtk & gst

    Debug:初始化环境

    Debug:初始化配置

    Debug:初始化皮肤参数

    Debug:搜索home目录皮肤

    Debug:/home/hl/.iceplayer/skin/mac_slax/

    Debug:初始化home目录皮肤失败

    Debug:搜索usr目录皮肤

    Debug:/usr/share/iceplayer/skin/mac_slax/

    Debug:初始化usr目录皮肤成功

    Debug:初始化界面

    Debug:建立主要窗体

    Debug:初始化notify

    Debug:初始化歌词

    Debug:应用配置

    Debug:读取多播放列表

    Debug:初始化播放列表

    Debug:初始化播放列表success!

    Debug:初始化迷你模式

    Debug:初始化 mini

    Debug:应用播放类配置

    Debug:初始化 some configures

    Debug:初始化全局快捷键

    Debug:初始化均衡器

    Debug:初始化进度条

    Debug:初始化完成

    Debug:开启即播放

    Debug:/home/hl/音乐/单曲 - 爱情日记 (正式版)/于烈 - 爱情日记 (DJ版).mp3

    Debug:自动检查更新。。。

    Debug:歌词

    Error:不匹配任何本地歌词

    Debug:是否匹配设定的黑名单?

    段错误(吐核)

    下面是调试结果:

    [hl@localhost iceplayer]$ gdb -c ~/桌面/core.22448 /usr/bin/iceplayer

    GNU gdb (GDB) Fedora (7.2.90.20110429-36.fc15)

    Copyright (C) 2011 Free Software Foundation, Inc.

    License GPLv3+: GNU GPL version 3 or later

    This is free software: you are free to change and redistribute it.

    There is NO WARRANTY, to the extent permitted by law. Type "show copying"

    and "show warranty" for details.

    This GDB was configured as "i686-redhat-linux-gnu".

    For bug reporting instructions, please see:

    ...

    Reading symbols from /usr/bin/iceplayer...done.

    BFD: Warning: /home/hl/桌面/core.22448 is truncated: expected core file size >= 550993920, found: 52645888.

    [New LWP 22448]

    [New LWP 22452]

    [New LWP 22453]

    Cannot access memory at address 0xaff973e0

    (gdb) where

    #0 0x4fbf65d7 in ?? ()

    Cannot access memory at address 0xbf83bce4

    (gdb) set lib-search-path

    No symbol "lib" in current context.

    (gdb) set solib-search-path

    Cannot access memory at address 0xaff973e0

    (gdb) where

    #0 0x4fbf65d7 in ?? ()

    Cannot access memory at address 0xbf83bce4

    (gdb)

    #0 0x4fbf65d7 in ?? ()这一句如何加载库,显示??的内容(6)m:b

    oohyoou 于 2011-05-19 14:02:40发表:

    不好意思。。。少打了好多内容:

    段错误(吐核)

    以下是运行与错误提示过程:

    [hl@localhost ~]$ iceplayer

    Welcome! Version=:4.04-20110508

    Debug:init one-instance

    Debug:init gtk & gst

    Debug:初始化环境

    Debug:初始化配置

    Debug:初始化皮肤参数

    Debug:搜索home目录皮肤

    Debug:/home/hl/.iceplayer/skin/mac_slax/

    Debug:初始化home目录皮肤失败

    Debug:搜索usr目录皮肤

    Debug:/usr/share/iceplayer/skin/mac_slax/

    Debug:初始化usr目录皮肤成功

    Debug:初始化界面

    Debug:建立主要窗体

    Debug:初始化notify

    Debug:初始化歌词

    Debug:应用配置

    Debug:读取多播放列表

    Debug:初始化播放列表

    Debug:初始化播放列表success!

    Debug:初始化迷你模式

    Debug:初始化 mini

    Debug:应用播放类配置

    Debug:初始化 some configures

    Debug:初始化全局快捷键

    Debug:初始化均衡器

    Debug:初始化进度条

    Debug:初始化完成

    Debug:开启即播放

    Debug:/home/hl/音乐/单曲 - 爱情日记 (正式版)/于烈 - 爱情日记 (DJ版).mp3

    Debug:自动检查更新。。。

    Debug:歌词

    Error:不匹配任何本地歌词

    Debug:是否匹配设定的黑名单?

    段错误(吐核)

    下面是调试结果:

    [hl@localhost iceplayer]$ gdb -c ~/桌面/core.22448 /usr/bin/iceplayer

    GNU gdb (GDB) Fedora (7.2.90.20110429-36.fc15)

    Copyright (C) 2011 Free Software Foundation, Inc.

    License GPLv3+: GNU GPL version 3 or later

    This is free software: you are free to change and redistribute it.

    There is NO WARRANTY, to the extent permitted by law. Type "show copying"

    and "show warranty" for details.

    This GDB was configured as "i686-redhat-linux-gnu".

    For bug reporting instructions, please see:

    ...

    Reading symbols from /usr/bin/iceplayer...done.

    BFD: Warning: /home/hl/桌面/core.22448 is truncated: expected core file size >= 550993920, found: 52645888.

    [New LWP 22448]

    [New LWP 22452]

    [New LWP 22453]

    Cannot access memory at address 0xaff973e0

    (gdb) where

    #0 0x4fbf65d7 in ?? ()

    Cannot access memory at address 0xbf83bce4

    (gdb) set lib-search-path

    No symbol "lib" in current context.

    (gdb) set solib-search-path

    Cannot access memory at address 0xaff973e0

    (gdb) where

    #0 0x4fbf65d7 in ?? ()

    Cannot access memory at address 0xbf83bce4

    (gdb)

    #0 0x4fbf65d7 in ?? ()这一句如何加载库,显示??的内容:0)1

    alick 于 2011-05-19 12:50:32发表:

    楼主组织下思路和语言,iceplayer究竟出什么问题了?

    展开全文
  • conda-段错误(吐核)

    2021-06-07 22:15:31
    conda-段错误吐核) 下午刚看到这个报错我觉得有点裂开,一时间不知道该怎么办,google了一下也没有很好的解决办法。网上看到有人说是因为不正确的退出进程导致的,有人说用conda clean -a 后就可以,但是我操作了...
  • linux调试段错误吐核)gdb调试

    千次阅读 2019-08-22 16:40:28
    使用源程序如下,该程序需要输入两个参数才会报段错误吐核: /******************************************************************* Author: wanglei ...
  • linux 吐核段错误

    2020-05-10 12:17:37
    可能原因: 1.数组开太大 2.空指针 (遇到新的原因再更新)
  • [Linux] 什么是 段错误吐核)?

    千次阅读 2019-06-13 21:47:06
    我们在Linux环境下编程中,有时执行编译好的文件时会出现段错误吐核),这是经常出现的一个错误。 它是什么意思呢? 这个错误过程中都有哪些文件? 与VS中IDE直接报错有何不同?我们将通过本篇进行探讨。 ...
  • 段错误吐核

    2018-02-08 17:31:19
    void chline(char ch,int i,int j) { for(int a = 0;a<i;a++) printf("\n"); for(int b = 0;b<=(j-i+1);b++) printf("%c",ch); printf("\n"); }
  • linux调试段错误吐核)问题小结

    千次阅读 2019-03-27 23:18:25
    段错误吐核一般都是和内存有关系,出现这种问题一般都要编译能通过。 我总结了一下几点原因: 1.使用地址变量时没有带取址符; 2.字符串为空时:使用字符串要求不为空时,而使用时忘记赋值。 3.程序中出现中文...
  • 关于同时import TensorFlow 与faiss出现的报错,真的是苦恼了一时间,把自己的代码分开测试始终找不到代码问题出现在哪,现在终于意识到这个问题,只要同时import这两个包就会遇到这个错误
  • 首先我们先来搞清楚什么会导致段错误(Segmentation fault)。段错误是指硬件设备MMU(内存管理单元)发现访问了一个非法的虚拟地址,通知操作系统内核给进程发送11号信号(SIGSEGV信号),导致进程异常终止。 一般来说,...
  • yongy1978 于 2014-06-16 15:07:06发表:学习了,自己在编程时也经常遇到段错误!guxinglei15 于 2013-09-25 13:41:46发表:#include#include#define ARRAY_LENGTH 1000typedef struct{int data[ARRAY_LENGTH];int ...
  • pytorch出现 ‘段错误(吐核)’

    千次阅读 2019-02-19 10:23:37
    pytorch训练程序启动的时候出现:段错误吐核) (mypytorch) [iot1@P100v0 mech_demo]$ python mech_main.py 段错误(吐核) 解决方案: 用Vscode单步调试,定位 发现是matplotlib安装错误的问题 Type "help&...
  • 段错误(吐核)

    万次阅读 2017-05-19 14:23:33
    愣了几秒,吐核。。你咋不上天呢。。。。 在网上找资料,发现原英文应该是 core dumped 核心已转储,至于是翻译时候的冷笑话还是翻译错误就不管了~ 用网上的找的方法在 命令前面加 strace 追踪下命令执行的详细...
  • 4、ATAT(合金理论自动化程序)教程(上) 5、ATAT(合金理论自动化程序)教程(下) 而笔者在使用过程中有一时间频繁遇到段错误吐核/core dumped)的报错,无法获得产生的结构模型,经过一番探索,找到一个解决...
  • ummm。。。重新压缩一下 再上传 。。。 就好了
  • 更新于2019.04.17我们写的程序, 尤其是C/C++程序有时候会段错误, 而且往往发生在部署环境而非调试环境, 对问题定位带来很大困难. 这时一般有两种方法来解决问题, 一种是生成core dump文件, 然后用gdb调试这个文件; ...
  • 在CentOS7上安装了PGI编译器,但是调试过程中遇到的“段错误(吐核)”一直让人很头疼。通常采用在程序中增加屏幕输出代码的方式来追踪和定位出错的变量,比如下面这个样例程序就在第16行和第18行增加了两句输出:1 ...
  • 此时我们只能依据linux记录的错误日志来定位问题。涉及linux命令本文涉及以下几条命令1. dmesg命令,用于获取程序出错时的堆栈地址1)dmesg |grep -e 'segfault|general'可以通过该命令过滤出发生崩溃的程序,以及...
  • SecureCRT 使用rz上传文件的后提示zmodem transfer canceled by remote side ...然后发现下面有一句提示:段错误(吐核) 发现是home下的内存满了,无法再上传文件了。删除一些不必要的文件就好啦! ...
  • ubuntu出现段错误 (核心已转储)

    千次阅读 2020-03-09 10:26:14
    出现这样的错误一般是使用conda创建虚拟环境或者下载安装某个库时,下到一半网络中断,然后再一次使用同样的命令安装或者创建时出现的错误。如下图: 解决方法是清除未下载完的文件。可以去缓存的位置(…/...
  • 代码环境: linux centos7系统 conda环境 GPU运行 问题描述 在运行时出现下图问题: 原因分析: 应该是上一个程序进程没有结束,占用了显存,导致显存没有释放。 ...重新运行 解决吐核问题 ...
  • CentOS命令

    千次阅读 2021-05-17 08:30:26
    网络配置# 重启网络管理器$ service network restart# 查看IP地址$ ip addr# 修改IP配置$ cd /etc/sysconfig/network-scripts/# 安装VIM$ yum install -y vim# 安装netstats$ yum install -y net-tools# 使用netstat...
  • gdb使用core文件调试程序,解决“段错误核心已转储“的问题;设置core文件开关,解决> "警告:此文件自读入后已发生改动!!!"以及"core pattern" E667:同步失败的信息;等问题
  • 段错误(核心已转储)的问题原因

    千次阅读 2022-02-14 22:43:54
    一个困扰已久的问题,今天终于明白了。 core,核心(线圈),没有半导体之前,使用线圈内存,指代内存。 可执行文件是分段存储的,加载进内存也是分段的,如代码、数据、堆、...[Linux] 什么是 段错误吐核

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,059
精华内容 4,823
关键字:

段错误(吐核)

友情链接: light.rar