
ProcDump Sysinternals 도구의 Linux 버전
ProcDump은 Windows용 Sysinternals 도구 모음에 포함된 클래식 ProcDump 도구를 Linux 및 Mac용으로 재해석한 것입니다. ProcDump는 성능 트리거를 기반으로 애플리케이션의 코어 덤프를 생성할 수 있는 편리한 방법을 Linux 및 Mac 개발자에게 제공합니다. Linux 및 Mac용 ProcDump는 Sysinternals의 일부입니다.

gdb >= 7.6.1설치 방법은 여기를 참조하세요.
빌드 방법은 여기를 참조하세요.
호환성 변경 ProcDump 1.3 릴리스와 함께 스위치가 Windows ProcDump 버전에 맞춰 정렬되었습니다. Mac 버전은 현재 제한된 트리거 집합을 제공합니다.
캡처 사용법:
procdump [-n Count]
[-s Seconds]
[-c|-cl CPU_Usage]
[-m|-ml Commit_Usage1[,Commit_Usage2...]]
[-gcm [<GCGeneration>: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]
[-gcgen Generation]
[-restrack [nodump]]
[-sr Sample_Rate]
[-tc Thread_Threshold]
[-fc FileDescriptor_Threshold]
[-sig Signal_Number1[,Signal_Number2...]]
[-e]
[-f Include_Filter,...]
[-fx Exclude_Filter]
[-mc Custom_Dump_Mask]
[-pf Polling_Frequency]
[-o]
[-log syslog|stdout]
{
{{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}
}
옵션:
-n 덤프를 쓰고 종료하기 전까지의 덤프 수.
-s 덤프를 쓰기 전 대기할 연속 초 (기본값: 10).
-c 프로세스 덤프를 생성할 CPU 임계값 (이상).
-cl 프로세스 덤프를 생성할 CPU 임계값 (이하).
-m 덤프를 생성할 메모리 커밋 임계값 (MB, 이상).
-ml 덤프를 생성할 메모리 커밋 임계값 (MB, 이하).
-gcm [.NET] 지정된 세대 또는 힙에 대해 덤프를 생성할 GC 메모리 임계값 (MB, 이상) (기본값: 전체 .NET 메모리 사용량).
-gcgen [.NET] 지정된 세대의 가비지 수집이 시작되고 완료될 때 덤프 생성.
-restrack 메모리 누수 추적 활성화 (malloc 계열 API). 다른 트리거 없이 사용하는 경우 't'를 눌러 수동으로 restrack 보고서를 캡처합니다. 다른 트리거와 함께 사용할 경우 'nodump' 옵션을 사용하여 덤프 생성을 방지하고 restrack 보고서만 생성할 수 있습니다.
-sr -restrack 사용 시 샘플링 비율.
-tc 프로세스 덤프를 생성할 스레드 수 임계값 (이상).
-fc 프로세스 덤프를 생성할 파일 디스크립터 수 임계값 (이상).
-sig 프로세스 덤프를 발생시킬 신호 번호의 쉼표로 구분된 목록 (해당 신호가 발생하면 덤프).
-e [.NET] 프로세스에서 예외가 발생할 때 덤프 생성.
-f .NET 예외 내용에 대한 필터 (포함, 쉼표로 구분). 와일드카드(*) 지원.
-fx -restrack 호출 스택 내용에 대한 필터 (제외, 쉼표로 구분). 와일드카드(*) 지원.
-mc 코어 덤프에 포함할 메모리를 지정하는 사용자 정의 코어 덤프 마스크 (16진수). 사용 가능한 옵션은 'man core' (/proc/[pid]/coredump_filter)를 참조하세요.
-pf 폴링 빈도.
-o 기존 덤프 파일 덮어쓰기.
-log 확장 ProcDump 추적을 지정된 출력 스트림(syslog 또는 stdout)에 기록.
-w 지정한 프로세스가 실행 중이 아니면 시작될 때까지 대기.
-pgid 지정된 프로세스 ID는 프로세스 그룹 ID를 나타냄.
-restrack 스위치는 리소스 추적을 활성화하여 코어 덤프 생성 시점에 해제되지 않은 리소스 할당을 모니터링하고 보고합니다. 결과는 '.restrack' 확장자를 가진 파일에 저장됩니다. 현재 다음 리소스 할당/해제 함수가 추적됩니다:
할당:
해제:
Mac 버전은 현재 리소스 추적을 구현하지 않습니다.
다음 예제는 모두 pid == 1234인 프로세스를 대상으로 합니다.
다음 명령은 즉시 코어 덤프를 생성합니다.
sudo procdump 1234
다음 명령은 10초 간격으로 3개의 코어 덤프를 생성합니다.
sudo procdump -n 3 1234
다음 명령은 5초 간격으로 3개의 코어 덤프를 생성합니다.
sudo procdump -n 3 -s 5 1234
다음 명령은 프로세스 CPU 사용률이 65% 이상일 때마다 코어 덤프를 생성하며, 최대 3회까지, 각 덤프 간 최소 10초 간격을 둡니다.
sudo procdump -c 65 -n 3 1234
다음 명령은 프로세스 CPU 사용률이 65% 이상일 때마다 코어 덤프를 생성하며, 최대 3회까지, 각 덤프 간 최소 5초 간격을 둡니다.
sudo procdump -c 65 -n 3 -s 5 1234
다음 명령은 CPU 사용률이 [10,65] 범위를 벗어날 때 코어 덤프를 생성합니다.
sudo procdump -cl 10 -c 65 1234
다음 명령은 CPU 사용률이 65% 이상이거나 메모리 사용량이 100MB 이상일 때 코어 덤프를 생성합니다.
sudo procdump -c 65 -m 100 1234
다음 명령은 메모리 사용량이 100MB 이상일 때 코어 덤프를 생성한 후, 메모리 사용량이 200MB 이상일 때 또 다른 덤프를 생성합니다.
sudo procdump -m 100,200 1234
다음 명령은 사용자가 't'를 누를 때마다 메모리 누수 보고서(덤프 없음)를 생성합니다:
sudo procdump -restrack 1234
다음 명령은 5초 간격으로 3개의 메모리 누수 보고서(덤프 없음)를 생성합니다:
sudo procdump -n 3 -s 5 -restrack nodump 1234
다음 명령은 메모리 사용량이 100MB 이상일 때 코어 덤프와 메모리 누수 보고서를 생성합니다.
sudo procdump -m 100 -restrack 1234
다음 명령은 메모리 사용량이 100MB 이상일 때 메모리 누수 보고서(덤프 없음)를 생성합니다.
sudo procdump -m 100 -restrack nodump 1234
다음 명령은 메모리 사용량이 100MB 이상일 때, 10번째 메모리 할당마다 샘플링하여 코어 덤프와 메모리 누수 보고서를 생성합니다.
sudo procdump -m 100 -restrack -sr 10 1234
다음 명령은 메모리 사용량이 100MB 이상일 때 코어 덤프와 메모리 누수 보고서를 생성하며, "cache" 문자열을 포함하는 프레임이 있는 호출 스택은 제외합니다.
sudo procdump -m 100 -restrack -fx *cache* 1234
다음 명령은 전체 .NET 메모리 사용량이 100MB 이상일 때 코어 덤프를 생성한 후, 메모리 사용량이 200MB 이상일 때 또 다른 덤프를 생성합니다.
sudo procdump -gcm 100,200 1234
다음 명령은 .NET 세대 1의 메모리 사용량이 1MB 이상일 때 코어 덤프를 생성한 후, 메모리 사용량이 2MB 이상일 때 또 다른 덤프를 생성합니다.
sudo procdump -gcm 1:1,2 1234
다음 명령은 .NET 대형 개체 힙(LOH) 메모리 사용량이 100MB 이상일 때 코어 덤프를 생성한 후, 메모리 사용량이 200MB 이상일 때 또 다른 덤프를 생성합니다.
sudo procdump -gcm LOH:100,200 1234
다음 명령은 .NET 세대 1 가비지 수집의 시작과 끝에서 코어 덤프를 생성합니다.
sudo procdump -gcgen 1
다음 명령은 /tmp 디렉터리에 즉시 코어 덤프를 생성합니다.
sudo procdump 1234 /tmp
다음 명령은 현재 디렉터리에 dump_0.1234라는 이름의 코어 덤프를 생성합니다. -n을 사용하면 파일 이름이 dump_0.1234, dump_1.1234 등으로 지정됩니다.
sudo procdump 1234 dump
다음 명령은 SIGSEGV가 발생할 때 코어 덤프를 생성합니다.
sudo procdump -sig 11 1234
다음 명령은 SIGSEGV가 발생할 때 코어 덤프를 생성하며, 코어 덤프에는 익명 전용(private) 매핑만 포함됩니다.
sudo procdump -mc 1 -sig 11 1234
다음 명령은 대상 .NET 애플리케이션이 System.InvalidOperationException을 throw할 때 코어 덤프를 생성합니다.
sudo procdump -e -f System.InvalidOperationException 1234
포함 필터는 부분 일치 및 와일드카드 일치를 지원하므로, 다음 명령도 System.InvalidOperationException에 대해 코어 덤프를 생성합니다.
sudo procdump -e -f InvalidOperation 1234
또는
sudo procdump -e -f "*Invali*Operation*" 1234
모든 옵션은
-w와 함께 사용하여 지정한 이름의 프로세스가 시작될 때까지 대기할 수도 있습니다.
다음 명령은 이름이 my_application인 프로세스를 기다리다가 발견되면 즉시 코어 덤프를 생성합니다.
sudo procdump -w my_application
문제를 해결하고 코드베이스에 직접 기여하는 데 관심이 있으시면 기여 방법 문서를 참조하세요. 다음 내용을 다룹니다:
또한 행동 강령을 참조하세요.
저작권 (c) Microsoft Corporation. 모든 권리 보유.
MIT 라이선스에 따라 사용이 허가됩니다.
Linux용 ProcDump: