认识我的$uname-aLinuxhostmachine4.1.2-2-ARCH#1SMPPREEMPTWedJul1508:30:32UTC2015x86_64GNU/Linux我正在尝试学习如何使用GDB调试C程序。我认为,如果我可以使用GDB找出导致段错误的错误,那将特别出色。我有一个小程序,作为K&R练习1-13的解决方案而编写,给定一个特定大小的输入字符串,它将生成一个段错误:$~/learning_c/KR_exercises/chapter_1/1.13.x`--我提供了一个来自标准输入的字符串,并且...--Segmentationfault(coredumped)根据
(这里我只针对Linux)我假设核心是由glibc的默认信号处理程序生成的。但如果我用谷歌搜索,大部分结果都说操作系统生成核心转储。如果OS生成内核,信号处理程序将首先被调用(或)内核首先被转储? 最佳答案 内核本身生成核心转储。在此处查看linux内核源代码中的核心处理例程:http://lxr.linux.no/linux+v3.12.6/fs/coredump.c如果进程收到以下任何信号1,内核通过尝试核心转储来响应。#defineSIG_KERNEL_COREDUMP_MASK(\rt_sigmask(SIGQUIT)|rt
(这里我只针对Linux)我假设核心是由glibc的默认信号处理程序生成的。但如果我用谷歌搜索,大部分结果都说操作系统生成核心转储。如果OS生成内核,信号处理程序将首先被调用(或)内核首先被转储? 最佳答案 内核本身生成核心转储。在此处查看linux内核源代码中的核心处理例程:http://lxr.linux.no/linux+v3.12.6/fs/coredump.c如果进程收到以下任何信号1,内核通过尝试核心转储来响应。#defineSIG_KERNEL_COREDUMP_MASK(\rt_sigmask(SIGQUIT)|rt
有没有办法为特定进程配置放置核心转储文件的目录?我有一个用C++编写的守护进程,我想为其配置核心转储目录。可选地,文件名模式也应该是可配置的。我知道/proc/sys/kernel/core_pattern,但是这会全局改变模式和目录结构。Apache有指令CoreDumpDirectory-所以这似乎是可能的。 最佳答案 不,您不能为每个进程设置它。核心文件被转储到进程的当前工作目录,或者如果模式包含目录,则转储到/proc/sys/kernel/core_pattern中设置的目录。apache中的CoreDumpDirecto
有没有办法为特定进程配置放置核心转储文件的目录?我有一个用C++编写的守护进程,我想为其配置核心转储目录。可选地,文件名模式也应该是可配置的。我知道/proc/sys/kernel/core_pattern,但是这会全局改变模式和目录结构。Apache有指令CoreDumpDirectory-所以这似乎是可能的。 最佳答案 不,您不能为每个进程设置它。核心文件被转储到进程的当前工作目录,或者如果模式包含目录,则转储到/proc/sys/kernel/core_pattern中设置的目录。apache中的CoreDumpDirecto
我可以在Linux上配置进入核心转储的内容吗?我想获得类似Windows小型转储的信息(应用程序崩溃时有关堆栈帧的最少信息)。我知道您可以使用ulimit为核心文件设置最大大小,但这不允许我控制核心内部的内容(即不能保证如果我将限制设置为64kb它例如,将转储堆栈的最后16页)。此外,如果可能的话,我想以编程方式(通过代码)设置它。我查看了mancore提到的/proc/PID/coredump_filter文件,但对于我的目的来说它似乎过于粗糙。提供一些背景信息:出于多种原因,我需要微型核心文件:我需要通过网络为众多(数千)客户收集它们;此外,这些是带有少量SD卡的嵌入式设备,以及用
我可以在Linux上配置进入核心转储的内容吗?我想获得类似Windows小型转储的信息(应用程序崩溃时有关堆栈帧的最少信息)。我知道您可以使用ulimit为核心文件设置最大大小,但这不允许我控制核心内部的内容(即不能保证如果我将限制设置为64kb它例如,将转储堆栈的最后16页)。此外,如果可能的话,我想以编程方式(通过代码)设置它。我查看了mancore提到的/proc/PID/coredump_filter文件,但对于我的目的来说它似乎过于粗糙。提供一些背景信息:出于多种原因,我需要微型核心文件:我需要通过网络为众多(数千)客户收集它们;此外,这些是带有少量SD卡的嵌入式设备,以及用
我在ARM9板上运行嵌入式应用程序,总闪存大小仅为180MB。我能够运行gdb,但是当我运行时(gdb)生成核心转储我得到一个错误warning:Memoryreadfailedforcorefilesection,1048576bytesat0x4156c000.warning:Memoryreadfailedforcorefilesection,1048576bytesat0x50c00000.Savedcorefilecore.5546Theprogramisrunning.Quitanyway(anddetachit)?(yorn)[answeredY;inputnotfrom
我在ARM9板上运行嵌入式应用程序,总闪存大小仅为180MB。我能够运行gdb,但是当我运行时(gdb)生成核心转储我得到一个错误warning:Memoryreadfailedforcorefilesection,1048576bytesat0x4156c000.warning:Memoryreadfailedforcorefilesection,1048576bytesat0x50c00000.Savedcorefilecore.5546Theprogramisrunning.Quitanyway(anddetachit)?(yorn)[answeredY;inputnotfrom
我使用的是Ubuntu12.04LTS。我写了一个简单的程序如下来制造崩溃//null.c#includeintmain(){int*p=NULL;intk=*p;printf("%d",sizeof(0));return0;}现在我用“gcc-gnull.c”运行然后是“./a.out”,输出符合预期。Segmentationfault(coredumped)现在我想使用gdb查看核心转储文件。我做了以下事情我检查了当前目录,没有核心转储文件我尝试用内容“core.%e.%p”更改/proc/sys/kernel/core_pattern。但我无法写入文件。它说“Fsync失败”。我