再聊用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

相关文章

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

js定位navigator.geolocation

一、简介   html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置。   window.navigator.geolocation提供了3个方法分别是: void getCurrentPosition(onSuccess,onError,options);//获取用户当前位置int watchCurrentPosition(

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后

src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没有那个文件或目录

(venv) shgbitai@shgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddeviceCollecting pyaudioDownloading PyAudio-0.2.14.tar.gz (47 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

定位cpu占用过高的线程和对应的方法

如何定位cpu占用过高的线程和对应的方法? 主要是通过线程id找到对应的方法。 1 查询某个用户cpu占用最高的进程号 top -u 用户名 2 查询这个进程中占用cpu最高的线程号 top –p 进程号-H    3 查询到进程id后把进程相关的代码打印到jstack文件 jstack -l pid > jstack.txt 4 在jstack文件中通过16进制的线程id搜索到

html记账本改写:数据重新布局,更好用了,没有localStorage保存版本

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>htm记账本</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid bla

Autoware 定位之ndt定位(八)

0. 简介 这一讲按照《Autoware 技术代码解读(三)》梳理的顺序,我们来说一说Autoware中的ndt定位,这个软件包有两个主要功能:1. 通过扫描匹配进行位置估计,2. 通过ROS服务使用蒙特卡洛方法估计初始位置 1. 代码阅读 1.1 debug.cpp 这段代码是一个用于生成用于调试的可视化标记数组的函数。它接受时间戳、坐标系、缩放比例、粒子信息和索引作为输入,并返回一个