性能分析之C++ core dump分析

Posted 高楼(Zee)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能分析之C++ core dump分析相关的知识,希望对你有一定的参考价值。

这个内容只是为了做个记录。

因为项目中有出现coredump的情况。 

先调起来。 

[app@主机A bin]$ gdb PROGRAM core.31018


下面是一连串的GDB信息。

GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-80.el7

Copyright (C) 2013 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

and "show warranty" for details.

This GDB was configured as "x86_64-redhat-linux-gnu".

For bug reporting instructions, please see:

<http://www.gnu.org/software/gdb/bugs/>...

上面这段话的意思是,随便用,没毛病。


Reading symbols from /bin/PROGRAM...done.

[New LWP 31018]

[New LWP 31027]

[New LWP 31022]

[New LWP 31036]

[New LWP 31038]

[New LWP 31041]

[New LWP 31044]

[New LWP 31047]

[New LWP 31042]

[New LWP 31032]

[New LWP 31033]

[New LWP 31034]

[New LWP 31035]

[New LWP 31037]

[New LWP 31020]

[New LWP 31026]

[New LWP 31031]

[New LWP 31030]

[New LWP 31040]

[New LWP 31039]

[New LWP 31046]

[New LWP 31045]

[New LWP 31043]

[New LWP 31019]

[New LWP 31025]

[New LWP 31024]

[New LWP 31023]

[New LWP 31021]

[New LWP 31029]

[New LWP 31028]

上面是LWP编号,也就是我们常说的线程号,在linux中线程就是LWP,有人说,LWP不是线程,而是进程。因为是light-weight process嘛,肯定是进程,是的,又不是thread,确实它是叫做轻量级进程。但是在linux中,除了它其他的也没有线程了。看一下WIKI上说的:

In computer operating systems, a light-weight process (LWP) is a means of achieving multitasking. In the traditional meaning of the term, as used in Unix System V and Solaris, a LWP runs in user space on top of a single kernel thread and shares its address space and system resources with other LWPs within the same process. Multiple user level threads, managed by a thread library, can be placed on top of one or many LWPs - allowing multitasking to be done at the user level, which can have some performance benefits.

看了半天,也不知道所以然是啥对吧。那就对了,不用纠结,来跟我一起说,计较那么多概念干吗,这个东西就是线程!


[Thread debugging using libthread_db enabled]

Using host libthread_db library "/lib64/libthread_db.so.1".

上面是说debug用的是啥子库。


Core was generated by `PROGRAM -g 1 -i 3006 -u VM_16_46_centos -U /data/app/log/LOG -m 0 -A\'.

Program terminated with signal 6, Aborted.

这里列出来了是怎么产生的core。 这里有信号6. 中止。 系统有多少信号呢?

大概是下面这么多。

信号

处理动作

发出信号的原因

标准

SIGHUP

1

A

终端挂起或者控制进程终止

POSIX.1

SIGINT

2

A

键盘中断(如break键被按下)

POSIX.1

SIGQUIT

3

C

键盘的退出键被按下

POSIX.1

SIGILL

4

C

非法指令

POSIX.1

SIGABRT

6

C

由abort(3)发出的退出指令

POSIX.1

SIGFPE

8

C

浮点异常

POSIX.1

SIGKILL

9

AEF

Kill信号

POSIX.1

SIGSEGV

11

C

无效的内存引用

POSIX.1

SIGPIPE

13

A

管道破裂:写一个没有读端口的管道

POSIX.1

SIGALRM

14

A

由alarm(2)发出的信号

POSIX.1

SIGTERM

15

A

终止信号

POSIX.1

SIGUSR1

30,10,16

A

用户自定义信号1

POSIX.1

SIGUSR2

31,12,17

A

用户自定义信号2

POSIX.1

SIGCHLD

20,17,18

B

子进程结束信号

POSIX.1

SIGCONT

19,18,25


进程继续(曾被停止的进程)

POSIX.1

SIGSTOP

17,19,23

DEF

终止进程

POSIX.1

SIGTSTP

18,20,24

D

控制终端(tty)上按下停止键

POSIX.1

SIGTTIN

21,21,26

D

后台进程企图从控制终端读

POSIX.1

SIGTTOU

22,22,27

D

后台进程企图从控制终端写

POSIX.1

SIGBUS

10,7,10

C

总线错误(错误的内存访问)

SUSv2

SIGPOLL

A

Sys

V定义的Pollable事件,与SIGIO同义

SUSv2

SIGPROF

27,27,29

A

Profiling定时器到

SUSv2

SIGSYS

12,-,12

C

无效的系统调用(SVID)

SUSv2

SIGTRAP

5

记一次Java Core Dump分析过程

dump 怎么分析死锁

java程序性能分析之thread dump和heap dump

linux调试工具glibc的演示分析-core dump double free

性能分析之-- JAVA Thread Dump 分析综述

C++异常分析使用windbg分析dump文件,排查模态框返回时的崩溃问题

(c)2006-2024 SYSTEM All Rights Reserved IT常识