2013-08-13 5 views
0

프로덕션 Linux 서버에서 오래된 코어 파일을 정리하는 스크립트를 작성해야했습니다. 스크립트를 작성하는 것은 어렵지 않지만 코어 파일을 제거하기 전에 기본 스택 백 트레이스를 로그 파일에 저장하고 싶습니다.코어 파일에서 디버깅 정보 추출

이러한 서버가 프로덕션 환경에 있고 GDB 또는 개발 도구가 설치되어 있지 않기 때문에 멀티 스레드 응용 프로그램에 대한 gdb 백 추적 명령의 유사점을 제공하는 빠르고 빠 른 프로그램을 찾고 있습니다.

누구나 이러한 도구를 알고 있습니까?

미리 감사드립니다.

+1

코어 파일을 gdb가있는 다른 컴퓨터에 복사 할 수 있습니까? – joev

+0

자동 스크립트로 코어 파일을 제거하기 전에 충돌에 대한 정보를 얻고 저장하는 것이 좋습니다. 그런 식으로 로그를 살펴보면 크래시에 대한 모든 정보를 잃지 않고 같은 장소에서 크래시를 계속하는 응용 프로그램이 충돌하는 것으로 나타났습니다. – moonchild

+0

일부 backtracing 라이브러리를 소프트웨어에 연결하는 것을 고려해보십시오 .... –

답변

2

다음과 같은 몇 가지가 있습니다. 대부분은 gdb에 비해 불완전합니다. 예를 들어 역 추적자가 함수 인수 나 지역 정보에 대한 정보를 인쇄하는 경우는 흔하지 않지만 gdb가이를 수행 할 수 있습니다. 또한 gdb는 다른 unwinders가 질식하는 경우에 종종 unwind 할 수 있습니다.

어쨌든, 내가 아는 것은 elfutils입니다. https://fedorahosted.org/elfutils/. 그것은 개발의 unwonginder를 가지고 있습니다 (확실하지 않은지, 아니면 git을 확인하십시오).

또한 libbacktrace가 있습니다. 그것은 gcc의 일부이며 프로세스 내 풀기를 위해 설계되었습니다. 그러나, 아마도 코어 파일에 적용될 수 있습니다.

libunwind도 있습니다. 나는 그것이 끔찍한 일이지만 YMMV라고 들었습니다.

주목해야 할 점 중 하나는 debuginfo를 사용할 수 있어야한다는 것입니다.

마지막 생각 - ABRT 사람들의 "흔적 잡기"영역에서 많은 작업이있었습니다. ABRT는 코어 덤프가 생성되는 동안 커널 훅을 사용하여 커널 덤프를 잡습니다. 그런 다음 코어를 서버에 업로드하고 버그를 파일화하여 분석을 수행합니다. 많은 작업을 재사용 할 수 있습니다. 이 공간에는 다른 작업이 있습니다.

종류의 뇌 덤프가 도움이되기를 바랍니다.