展开

关键词

coredump问题原理探究》windows版第二章coredump捕获环境

https:blog.csdn.netxuzhinaarticledetails8249852 这一章简述了在windows下如何设VS和userdump来捕获coredump文件。?????

18210

第09问:MySQL 莫名崩溃,如何保留现场?

因此我推荐开启 coredump,以备 MySQL 诊断需要。我们来模拟一个崩溃场景,然后 coredump 看看效果。选取一个容易复现崩溃的 bug,我们选择了 bug #95294。 我们先安装一个 5.7 的数据库,将其停掉,按照 bug #95294 的描述变更,手工启动 mysqld,可以看到 mysqld 无声无息的退出了,检查 error log,可以看到 MySQL 我们还需要调整 MySQL 运行用户的 ulimit,在本文中,MySQL 的运行用户是 root,我们调整其 core file 的限制,使其能生成 core dump: 最后,我们要在 MySQL coredump 的体积。 那我们怎么使用 coredump 文件呢?可以用 gdb 去访问 coredump 文件,获取各种信息,此处举例如何获取所有线程的堆栈信息。

23220
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    seccomp引起的SIGSYS问题 ​

    在一次启动中,qemu发生了错误:qemu-system-x86_64: network script etcqemu-ifup failed with status 159 问题的原因是因为seccomp的导致的 打开coredump调整procsyskernelcore_pattern,coredump文件生成的规则。 ulimit -c unlimited调整但前shell的coredump文件大小限制,在当前的shell下运行,文件大小生效。? 可见,这个coredump文件是因为SIGSYS信号产生的,这个信号不太常见。在执行到44行的execve的发生coredump,这也证实了上文的seccomp生效。

    76210

    如何调试Windows的stackdump文件

    本文介绍一种方法,通过反汇编c程序,结合程序coredump时生成的stackdump文件,可以快速定位出程序的coredump。 因为在f2函数中,调用free释放的内存不是由malloc分,所以导致程序coredump。当然,这个示例程序比较简答,很容易就知道是由于free非法内存导致coredump。 但如果在一个大项目中,定位coredump就没那么容易了。 如果只看这个stackdump文件,没法看出程序具体在哪个位coredump。 在反汇编文件中查找coredump时最后调用的地址00100401112,就可以定位出具体的coredump了。

    68580

    在 Linux 上创建并调试转储文件

    检查当前创建核心转储的设:ulimit -c如果它输出 unlimited,那么它使用的是(建议的)默认值。 堆栈跟踪显示,后续的调用源于 malloc.c,这说明内存的(取消)分可能出了问题。在源代码中,(即使没有任何 C++ 知识)你也可以看到,它试图释放一个指针,而这个指针并没有被内存管理函数返回。 工具可以在 etcsystemdcoredump.conf 中。 可以在 etcsystemdsystemd-tmpfiles-clean.timer 中轮换清理转储文件。你可以在其手册页中找到更多关于 coredumpctl 的信息。 coredump -c2你会得到一个浮点异常。

    10430

    Doris开发手记3:利用CoreDump文件快速定位Doris的查询问题

    如何生成CoreDump查看生成CoreDump文件的开关是否开启,输入命令ulimit -a core file size (blocks, -c) 0data seg size (kbytes, - 使用 ulimit -c 命令可以设系统允许生成的CoreDump的文件大小。 ulimit -c 1024 #设CoreDump文件大小为1024kulimit -c unlimited #不限制CoreDump文件大小执行命令 ulimit -c unlimited,这样当BE 进程Crash时就可以生成CoreDump文件。 通过BE的start_be.sh脚本启动BE时,脚本会自动设ulimit的参数。由于CoreDump文件较大,默认情况下不会开启CoreDump,所以这里需要修改BE的启动脚本。

    21140

    linux、pthread、qemu 的一次 pthread create 失败的分析

    分析: 1、coredump 生成的coredump,一种是了procsyskernelcore_pattern并且了ulimit的情况,coredump文件会按照core pattern生成。 加载coredump文件,查看trace: 看到了原因是abort,那么还好,毕竟不是最难分析的。 但是,每个task都需要有自己的用户栈,所以就需要在创建线程之前先为task分page size对齐的内存。分好内存之后,就可以使用系统调用sys_clone创建线程了。 综上,可以判断出来,内存是分成功的。 一,当时的stack_cache有一个缓存,直接分给了那次分;二,当时的stack_cache是空的,向kernel要了内存,并且成功了,在后面执行失败的时候,把内存归还给了cache。

    1.2K00

    一文读懂 | coredump文件是如何生成的

    另外,对于必现的 BUG (就是不管什么条件都会发生),一般可以通过 GDB 设断点进行调试。但对于偶现的 BUG,由于在某些特定的条件下才会发生,所以比较难直接通过 GDB 进行调试。 一、coredump 文件生成过程在程序发生某些错误而导致进程异常退出时,Linux 内核会根据进程当时的内存信息,生成一个 coredump 文件。 当进程接收到某些 信号 而导致异常退出时,就会生成 coredump 文件。那么,哪些信号会导致生成 coredump 文件呢? 如果不受限制,那么调用 format_corename 函数生成 coredump 文件的文件名。接着调用 filp_open 函数创建 coredump 文件。 三、生产环境应该打开 coredump 功能吗?最后,我们来讨论一下在生产环境应不应该打开 coredump 功能。

    24620

    ​qemu的一次pthread create失败的分析

    分析:1,coredump生成的coredump,一种是了procsyskernelcore_pattern并且了ulimit的情况,coredump文件会按照core pattern生成。 加载coredump文件,查看trace:?看到了原因是abort,那么还好,毕竟不是最难分析的。 但是,每个task都需要有自己的用户栈,所以就需要在创建线程之前先为task分page size对齐的内存。分好内存之后,就可以使用系统调用sys_clone创建线程了。 综上,可以判断出来,内存是分成功的。 一,当时的stack_cache有一个缓存,直接分给了那次分;二,当时的stack_cache是空的,向kernel要了内存,并且成功了,在后面执行失败的时候,把内存归还给了cache。

    52660

    关于《秦时明月世界》运维的那些事儿—自研上云与core优化

    一般情况下,限制coredump常常使用下面几板斧: 1.修改系统 ulimit -c,限制core文件的大小一般不建议这种方式,我们要获取的信息中最重要的,通常是异常发生时函数调用栈,而如果裁剪core 只能选择当时最高可以申请到的性能:SSD云硬盘,通过硬盘类型调整+扩磁盘容量(CBS上限跟磁盘大小也有关系),将磁盘IO吞吐性能从145MBs提到了260MBs。 优化方案1: 把core_pattern为通过管道传给脚本: ? 脚本里边压缩边写磁盘: ? 引入多线程压缩pigz 再考虑到我们的CPU资源较为充足,还可以用上多线程压缩提速,引入了pigz。 Flow-control值的评估:50MB是结合了CODM和天刀业务的使用经验,并经过实践验证,确定秦时值在50MB能较好平衡时间和性能需求。 cbs打散 1.为什么需要打散? 而打散操作,首先要业务侧子机别名或云盘别名或者云盘标签,保证前缀一致,然后联系腾讯云侧处理即可。4.在打散期间可正常使用吗?

    14830

    coredump问题原理探究》Linux x86版第二章coredump捕获的环境

    作用于当前shell的方法在当前shell设coredump的捕获,一般是用ulimit –c 命令。这条命令的含义,可以通过man ulimit得到。 如果用ulimit –c的结果不是0,那么coredump是会捕获的。 作用于单个用户的方法最简单的方法就是把ulimit–c放在用户的文件。不同的shell有不同的文件。 如bash的话,用户文件可以是~.bash_profile,~.bash_login,~.profile。 $ ulimit -cunlimited $ ulimit -cunlimited通过上面的方法,当程序崩溃时,就会产生coredump文件,但是文件名却是core。

    59820

    浅析Linux下利用coredump技术追查进程崩溃原因

    最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何。 如果系统开启了coredump,准确的说如果当前的shell环境开启了coredump,当前shell环境下的程序崩溃退出时,会把当时进程的栈的内存状态写入core文件。 》)core文件生成的位默认是可执行文件所在的位,名称默认为core,其位和名称是可以设的,我的设为:mkdir homecorefile echo “homecorefilecore-%e- 下面是一个可以导致coredump的例程:?划线处是会导致coredump处。执行后会在homecorefile目录下产生以下文件:# ls homecorefile? ————————————————总结以上所述是小编给大家介绍的Linux下利用coredump技术追查进程崩溃原因,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    48331

    编译、链接到载入、运行的大致过程----4.运行

    下面简要说明core dump 如何开启以及:ulimit -c SIZE 用于指定core file的大小(默认单位为KB),如果触发core dump时候的大小 超过指定的SIZE, 那么也不会进行 这个值默认为0, 表示不进行core dump, 最大可以设为 unlimited . 建议设为 memory的大小;ulimit 命令设的大小在重起后就失效了,所以最好写入 etcprofile 之类的文件;设core dump发生时候对应的文件路径以及名称,比如: echo rootcore varlogs, 而因为默认的varlogs 并不是系统自带的路径,所以必须手动创建该目录,否则 core dump 触发的时候也不会生成相应的文件.完成,要检验是否可以成功生成coredump root 1417216 Mar 8 17:06 core_3427_11_bash.www.my.com.1583658365# 上面例子,表示成功生成了core dump 文件,core dump的成功完成

    17710

    linux 下coredump相关

    1、支持产生coredump,需要设:ulimit -c unlimited2、控制core文件保存位和文件名格式procsyskernelcore_pattern 查看目前使用的方式修改文件命令: 添加当前uid(用户id)%g - insert current gid into filename 添加当前gid(用户组id)%s - insert signal that caused the coredump into the filename 添加导致产生core的信号%t - insert UNIX time that the coredump occurred into filename 添加core 文件生成时的unix时间%h - insert hostname where the coredump happened into filename 添加主机名%e - insert coredumping

    54120

    Swoole v4.5.3 版本发布

    streaming (#3354) (@twose)http 客户端下载文件时,在接受数据前不创建文件 (#3381) (@twose)http client 支持bind_address和bind_port (#3390) (@huanghantao)http client 支持lowercase_header (#3399) (@matyhtf)SwooleServer支持tcp_user_timeout (#3404) (@huanghantao)CoroutineSocket增加 event barrier 来减少协程切换 (#3409) (@matyhtf)为特定的 swString 增加memory 修复异步 Server 无法在WorkerStart回调函数中关闭 Server 的问题 (#3382) (@huanghantao)修复心跳线程在操作 conn->socket 的时候,可能会发生 coredump code和message的问题 (swoolelibrary#1b6c65e) (@sy-records)修复当调用了setProtocol方法后,swoole_socket_coroaccept coredump

    23820

    Linux下core文件的使用方法详解

    filename # 添加当前 uid %g - insert current gid into filename # 添加当前 gid %s - insert signal that caused the coredump into the filename # 添加导致产生 core 的信号 %t - insert UNIX time that the coredump occurred into filename # 添加 core 文件生成时的 unix 时间 %h - insert hostname where the coredump happened into filename # 添加主机名 %e - insert coredumping executable name into filename # 添加命令名procsyskernelcore_uses_pid 这个文件的值若为1,则无论时候 %p ,最后生成的 (gdb) bt ...如需要在 PC 上调试嵌入式设备产生的 core 文件,则需要选取相应平台的 gdb 工具,并在进入 gdb 后设符号文件的位$ xxx-xxx-gdb a.out...

    42531

    ​进程crash类问题处理方法

    SIG_KERNEL_COREDUMP_MASK:杀掉,尝试生成coredump文件。SIG_KERNEL_IGNORE_MASK:不处理。 SIGEGV:访问了内存空间之外的内存,或者访问的内存权限不匹,例如写只读的内存,再或者就是OOM了。 4,coredumpcoredump生成,出了符合信号的要求外,还需要limit条件符合:? 查看进程的limit情况,其中Max core file size行就是coredump文件的最大size。 软件的debug版本上,可以在一片连续的内存上下分别放一个rwx权限都没有的page,如果overflow了,或者被别人给踩了,都可以提前发现。 没有coredump的时候,只能通过dmesg,查到出问题时候的PC寄存器的值;有coredump的情况下,可以拿到更多的寄存器的值。

    1.7K80

    linux core文件机制

    filename 添加当前uid    %g - insert current gid into filename 添加当前gid    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号    %t - insert UNIX time that the coredump occurred into filename 添加 core文件生成时的unix时间    %h - insert hostname where the coredump happened into filename 添加主机名    %e - insert 有一种建立文件的方法,不需要每次启动gdb都以上变量,即:在待运行gdb的路径下建立.gdbinit。 文件内容:set solib-absolute-prefix YOUR_CROSS_COMPILE_PATHset solib-search-path YOUR_CROSS_COMPILE_PATHset

    1.3K42

    多线程中使用curl致coredump问题

    coredump时的调用栈: #0  0x081eff2c in addbyter () #1  0x081f05b8 in dprintf_formatf () #2  0x081f15cf in () coredump的原因是因为curl的DNS解析超时控制是使用SIGALARM实现的。 这样导致发现SIGALARM会出现多线程修改同一个全局变量,由此产生了COREDUMP。 问题发生的前提是设了CURLOPT_TIMEOUT或CURLOPT_CONNECTTIMEOUT,并且值不为0。 解决办法: 1) 设CURLOPT_NOSIGNAL的值为1 2) 使用c-ares(configure时指定参数--enable-ares) libcurl_setup.h(异步模式使用c-ares

    82030

    公司内部文档安全软件coredump分析实例

    调试工具: windbg 反汇编工具: ida pro 5.5 介绍: 该文档安全软件是由公司内部V**工具启动,当在V**工具输入用户密码连接网络后,V**工具会自动把文档安全软件启动, 但每次启动都会coredump 由于电脑用了windbg作为实时调试器,每次启动windbg都会弹出来, 显示coredump 分析过程: coredump信息 (50c4.50d0): Access violation - code 由上面可以看coredump是由于往空地址里取值. 由 *** ERROR: Symbol file could not be found.  当这个地址为空,就出现coredump. 那么这个空地址是从哪里传进来的? 还有, coredump的函数是_strcat还是_strcpy? 从这里可以看到, 这里的代码是没有对CCCF::GetUserID的返回值进行判空处理, 从而导致coredump 至于是否会由于strcpy而导致栈溢出, 就先不管了.

    29520

    相关产品

    • 分布式配置中心

      分布式配置中心

      服务治理中心(service governance center,sgc)在服务治理场景中,提供服务调用中的注册发现、流量控制、熔断限流等能力,支持多语言客户端、集成多种主流服务框架,帮助用户实现高效

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券