再聊用strace来定位没有core文件的core dump

2024-02-06 13:38

本文主要是介绍再聊用strace来定位没有core文件的core dump,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      我把ulimit -c 给关掉, 如下程序虽然core dump了, 但并不会产生core文件, 看看:

 

#include <stdio.h>
#include <unistd.h>int main()
{for(int i = 0; i < 60; i++){printf("aa [%d]\n", i);if(10 == i){int *p = NULL;*p = 0;}sleep(1);}return 0;
}

     结果:

 

 

taoge@localhost Desktop> ulimit -c
0
taoge@localhost Desktop> g++ main.cpp 
taoge@localhost Desktop> strace -i ./a.out 
[00374424] execve("./a.out", ["./a.out"], [/* 38 vars */]) = 0
[0086e2fd] brk(0)                       = 0x8634000
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78ce000
[0086f5d1] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[0086f494] open("/etc/ld.so.cache", O_RDONLY) = 3
[0086f45e] fstat64(3, {st_mode=S_IFREG|0644, st_size=49072, ...}) = 0
[0086f6d3] mmap2(NULL, 49072, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb78c2000
[0086f4cd] close(3)                     = 0
[0086f494] open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20F\254\0044\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=942040, ...}) = 0
[0086f6d3] mmap2(0x4a7f000, 969644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4a7f000
[0086f6d3] mmap2(0x4b60000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe0) = 0x4b60000
[0086f6d3] mmap2(0x4b66000, 23468, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4b66000
[0086f4cd] close(3)                     = 0
[0086f494] open("/lib/libm.so.6", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p4\243\0004\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=202040, ...}) = 0
[0086f6d3] mmap2(0xa30000, 168064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xa30000
[0086f6d3] mmap2(0xa58000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27) = 0xa58000
[0086f4cd] close(3)                     = 0
[0086f494] open("/lib/libgcc_s.so.1", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\257\212\0044\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=122232, ...}) = 0
[0086f6d3] mmap2(0x48a9000, 119592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x48a9000
[0086f6d3] mmap2(0x48c6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d) = 0x48c6000
[0086f4cd] close(3)                     = 0
[0086f494] open("/lib/libc.so.6", O_RDONLY) = 3
[0086f514] read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 N\211\0004\0\0\0"..., 512) = 512
[0086f45e] fstat64(3, {st_mode=S_IFREG|0755, st_size=1855584, ...}) = 0
[0086f6d3] mmap2(0x87e000, 1620360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x87e000
[0086f754] mprotect(0xa03000, 4096, PROT_NONE) = 0
[0086f6d3] mmap2(0xa04000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x185) = 0xa04000
[0086f6d3] mmap2(0xa07000, 10632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xa07000
[0086f4cd] close(3)                     = 0
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c1000
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c0000
[0085a552] set_thread_area({entry_number:-1 -> 6, base_addr:0xb78c06d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
[0086f754] mprotect(0xa04000, 8192, PROT_READ) = 0
[0086f754] mprotect(0xa58000, 4096, PROT_READ) = 0
[0086f6d3] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78bf000
[0086f754] mprotect(0x4b60000, 16384, PROT_READ) = 0
[0086f754] mprotect(0x876000, 4096, PROT_READ) = 0
[0086f711] munmap(0xb78c2000, 49072)    = 0
[00d80424] fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
[00d80424] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78cd000
[00d80424] write(1, "aa [0]\n", 7aa [0]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [1]\n", 7aa [1]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [2]\n", 7aa [2]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [3]\n", 7aa [3]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [4]\n", 7aa [4]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [5]\n", 7aa [5]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [6]\n", 7aa [6]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [7]\n", 7aa [7]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [8]\n", 7aa [8]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [9]\n", 7aa [9]
)      = 7
[00d80424] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[00d80424] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[00d80424] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[00d80424] nanosleep({1, 0}, 0xbfe789e4) = 0
[00d80424] write(1, "aa [10]\n", 8aa [10]
)     = 8
[080484de] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
[????????] +++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
taoge@localhost Desktop> ll | grep core
taoge@localhost Desktop> 

      可见, 没有core文件, 也能定位出core,  当然, 我们也可以用strace -p哈。

 

 

      夜深人静, 玩玩core, 就这样。

 

 

 

 

 

这篇关于再聊用strace来定位没有core文件的core dump的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684492

相关文章

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

故障定位快人一步! 华为交换机排障命令汇总

《故障定位快人一步!华为交换机排障命令汇总》在使用华为交换机进行故障排查时,首先需要了解交换机的当前状态,通过执行基础命令,可以迅速获取到交换机的系统信息、接口状态以及配置情况等关键数据,为后续的故... 目录基础系统诊断接口与链路诊断L2切换排障L3路由与转发高级调试与日志性能、安全与扩展IT人无数次实战

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到