2014-09-17 2 views
2

저는 리눅스와 코어 덤프가 새로 생겼기 때문에 어떤 종류의 정보가 코어 덤프에 저장되어 있는지 확신 할 수 없습니다. 코어 덤프 파일에서 쓰레드의 CPU 사용률을 검색하는 GDB 명령이 있는지 궁금합니다. CPU 사용률과 마찬가지로 '최고'명령을 사용합니다. 또한 메모리 사용량을 얻는 것도 좋을 것입니다.리눅스 코어 덤프에 쓰레드 CPU 사용 정보가 있습니까

이전 답변에서 질문에 대한 답을 찾고 싶습니다. 참조 : How to diagnose a python process chewing CPU in linux

감사합니다.

+1

"사용"이란 무엇을 의미합니까? 각 스레드가 시간을 보낸 곳에 대한 자세한 정보가 있으면 대답은 명확하지 않습니다. –

+0

나는 CPU 사용량을 의미합니다. Like 'top'명령어를 실행할 때 얻을 수있는 정보. 나는 특히 더 높은 CPU를 씹는 실을 잡는 것에 관심이있다. 기본적으로 코어 덤프에서 그걸 알아 내. – Feru

+0

컨텍스트가 무엇입니까? C 모듈이나 원시 파이썬 코드에 버그가 있습니까? 왜냐하면 실제로 gdb가 아닌 이런 종류의 문제에 대해 프로파일 러를 사용해야합니다. –

답변

3

아니요, 코어 덤프에서 CPU 사용량에 대한 정보를 얻을 수 없습니다.

코어 덤프는 죽을 때의 프로세스 메모리의 스냅 샷입니다. 모든 동적 히스토리는 CPU 작성/모델/빈도, 시스템로드, 기타 프로세스 수, 커널 스케줄 정보 등은 사용할 수 없습니다.

부작용으로 알고있는 한 메모리 사용 정보를 얻게됩니다. 코어 덤프를 생성 한 시스템에서 사용할 수있는 메모리 : 코어 덤프는 프로세스의 메모리이므로 프로세스가 사용하는 메모리가 많을수록 코어 덤프가 커집니다 (일반적으로 코드 umpump에 포함되지 않은 메모리 영역과 같은 예외가 있습니다).

+0

Bart Polot, 응답 해 주셔서 감사합니다. 코어 덤프가이 정보를 수집하지 않는다는 것에 놀랐습니다. 특히 덤프가 도망 가기 프로세스에서 수동으로 생성 될 때이 정보가 유용 할 것입니다. 어떻게 든 Windows 메모리 덤프에는이 정보 중 일부가 있습니다. 이 정보를 얻으려면 windbg에서 runaway runaway 명령을 생각해보십시오. 또한 OS 및 아키텍처 정보를 기억하십시오. – Feru

1

코어 덤프는 충돌 한 프로세스의 주소 공간 (메모리)의 복사본입니다. 이 프로세스를 사용하여 얼마나 많은 메모리가 사용되었는지 확인할 수 있으며 (추락 한 시점의 메모리에있는 모든 데이터를 검사 할 수 있지만) CPU 사용에 대한 정보는 포함되어 있지 않습니다.

1

미래에는 충분히 쉽게 수집 할 수 있습니다. 프로세스가 주기적으로 각 스레드의 메모리 사용량을 수집하고 디버깅 할 때 코어에서 해당 변수를 검색하십시오.