2017-04-18 9 views
0

커다란 코어 덤프, 예를 들어 120+ 기가 바이트가 있습니다.코어 덤프에 특정 문자열을 맨 앞에 추가하십시오.

나는 그것에서 프로그램 버전을 얻을 필요가 그래서 글로벌 상수 (의사 코드)를 추가 :

static const char* const = "MAGIC_KEYWORD_FOR_GREPPING_" + MY_PROGRAM_VERSION; 

그렇게 빨리 될 것 grepping, 코어 덤프의 시작에 배치 할 수 있습니까?

+0

""MAGIC_KEYWORD_FOR_GREPPING_ "+ MY_PROGRAM_VERSION'. 그것은 당신이 생각하는 것을하지 않을 것입니다. 'std :: cout << "Hello"+1;을 시도해보십시오. – MSalters

+0

@MSalters 문제의 "의사 코드"단어를보십시오. – vladon

답변

1

코어 덤프는 운영 체제에 의해 만들어지며 응용 프로그램에 의해 만들어지지는 않습니다. OS가 프로그램의 일부 변수 값을 알 수있는 방법이 없습니다. 코어 덤프의 파일 이름에 실행 파일 이름이 포함되도록 core_pattern을 설정하여 코어 덤프의 이름을 조정할 수 있습니다. 이 man page에는 지정자의 설명이 있습니다. 다음 그에 따라 매개 변수를 조정해야 cat /proc/sys/kernel/core_pattern이 (|/usr/share/apport/apport %p %s %c %P 예를 들면 광산) |로 시작하는 문자열을 반환하는 경우 -

그것은 당신의 OS가 어떤 응용 프로그램을 통해 파이프하여 코어 덤프를 생성하는 수 있습니다. 자세한 내용은 this link을 참조하십시오.

+0

큰 충고! 고맙습니다! – vladon

+0

하지만 프로세스 용으로 core_pattern을 변경할 수 있습니까? – vladon

+0

@vladon 당신이 코어 덤프의 이름을 바꾸면 그것은 모든 코어 덤프를위한 것입니다. 다른 프로그램이 코어 덤프를 생성한다면 코어 덤프 이름에 실행 파일의 이름을 추가 할 코어 덤프 이름에'% e'를 추가하십시오. 다른 위치에 같은 프로그램 (동일한 바이너리 파일 이름)을 가지고 있다면'% E'를 사용하여 코어 덤프에서'grep '할 수있는 전체 경로를 갖도록하십시오. 코어 덤프 패턴을'core_ % e'로 설정하고'prog1'과'prog2'가 실패하고 코어 덤프가 생성되면 두 코어 덤프 인 core_prog1과 core_prog2가 생깁니다. 타임 스탬프를 추가하는 것도 좋은 생각입니다. 사용 가능한 지정자를 모두 확인하십시오 :) – Rogus