coredump及调试

什么是coredump?

coredump是程序崩溃时的内存快照。
操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。

什么场景/怎样才能出coredump?

ulimit -c 可以设置core文件的大小,如果这个值为0.则不会产生core文件,这个值太小,则core文件也不会产生,因为core文件一般都比较大。

查看ulimit

ulimit -c

设置ulimit

ulimit -c unlimited
ulimit -c 1024

coredump存储目录在哪?

  • linux操作系统
    /proc/sys/kernel/core_pattern定义了下coredump路径的pattern。

gdp调试coredump

gdb sbin/nginx cores/core.nginx.1562145687.176208

输出为:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `nginx: worker process                               '.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  ngx_vslprintf (buf=0x7fffc9da3c68 "\320=\332\311\377\177",
    buf@entry=0x7fffc9da3c5a "my_test_conf: \320=\332\311\377\177", last=last@entry=0x7fffc9da4c30 "",
    fmt=0x742d76 "s", fmt@entry=0x742d67 "my_test_conf: %s", args=args@entry=0x7fffc9da3c18)
    at src/core/ngx_string.c:272
272                     while (*p && buf < last) {
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是coredump Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程...
    java菜阅读 4,332评论 0 4
  • 在Linux下程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使...
    随风化作雨阅读 48,026评论 2 15
  • 引言 当修改一个Linux系统参数或限制,比如文件打开数时,之前用到过的方式有ulimit、limits.conf...
    bluexiii阅读 6,477评论 0 5
  • 摘要:在我们往期对coredump的分析中,是依赖于core文件的,而core文件中也几乎包含了程序当前的所有状态...
    鱼鲲_91f3阅读 3,069评论 0 3
  • 推荐大家一个靠谱的论文检测平台。重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定...
    cccccxxx阅读 108评论 0 0

友情链接更多精彩内容