GFlags 명령 개요
gflags.exe 설치하고 찾는 방법에 대한 일반적인 내용은 GFlags를 참조 하세요.
GFlags 명령과 전역 플래그 대화 상자를 서로 바꿔 사용할 수 있습니다.
GFlags 명령 사용
GFlags를 사용하려면 명령줄에 다음 명령을 입력합니다.
GFlags 대화 상자를 열려면:
gflags
레지스트리에서 전역 플래그를 설정하거나 지우려면 다음을 수행합니다.
gflags /r [{+ | -}Flag [{+ | -}Flag...]]
현재 세션에 대한 전역 플래그를 설정하거나 지우려면 다음을 수행합니다.
gflags /k [{+ | -}Flag [{+ | -}Flag...]]
이미지 파일에 대한 전역 플래그를 설정하거나 지우려면 다음을 수행합니다.
gflags /i ImageFile [{+ | -}Flag [{+ | -}Flag...]]
gflags /i ImageFile /tracedb SizeInMB
특수 풀 기능을 설정하거나 지우려면(Windows Vista 이상)
gflags {/r | /k} {+ | -}spp {PoolTag | 0xSize}
개체 참조 추적 기능을 사용하거나 사용하지 않도록 설정하려면(Windows Vista 이상)
gflags {/ro | /ko} [/p] [/i ImageFile | /t PoolTag;[PoolTag...]]
gflags {/ro | /ko} /d
페이지 힙 확인을 사용하도록 설정하고 구성하려면 다음을 수행합니다.
gflags /p /enable ImageFile [ /full [/backwards] | /random Probability | /size SizeStart SizeEnd | /address AddressStart AddressEnd | /dlls DLL [DLL...] ]
[/debug ["DebuggerCommand"] | /kdebug] [/unaligned] [/notraces] [/fault Rate [TimeOut]] [/leaks] [/protect] [/no_sync] [/no_lock_checks]
페이지 힙 확인을 사용하지 않도록 설정하려면 다음을 수행합니다.
gflags /p [/disable ImageFile] [/?]
도움말을 표시하려면 다음을 수행합니다.
gflags /?
매개 변수
기
디버깅 기능을 나타내는 3자 약어(FlagAbbr) 또는 16진수 값(FlagHex)을 지정합니다. 약어 및 16진수 값은 GFlags 플래그 테이블에 나열됩니다.
다음 플래그 형식 중 하나를 사용합니다.
서식 | 설명 |
---|---|
{+ | -}FlagAbbr |
플래그 약어가 나타내는 플래그를 설정(+)하거나 지웁니다(-). 더하기(+) 또는 빼기(-) 기호가 없으면 명령이 적용되지 않습니다. |
[+ | -]FlagHex |
플래그의 16진수 값을 추가(+) 또는 빼기(-)합니다. 해당 값이 합계에 포함되면 플래그가 설정됩니다. 추가(+)가 기본값입니다. 단일 플래그를 나타내는 16진수 값(0x 제외)을 입력하거나 여러 플래그에 대한 16진수 값의 합계를 입력합니다. |
ImageFile
파일 이름 확장명(예: notepad.exe 또는 mydll.dll)을 포함하여 실행 파일의 이름을 지정합니다.
/r
레지스트리. 레지스트리에 저장된 시스템 전체 디버깅 플래그를 표시하거나 변경합니다. 이러한 설정은 Windows를 다시 시작할 때 적용되며 변경될 때까지 계속 적용됩니다.
추가 매개 변수 가 없으므로 gflags /r 은 레지스트리에 설정된 시스템 전체 플래그를 표시합니다.
/k
커널 플래그 설정입니다. 이 세션의 시스템 전체 디버깅 플래그를 표시하거나 변경합니다. 이러한 설정은 즉시 유효하지만 Windows가 종료되면 손실됩니다. 설정은 이 명령이 완료된 후 시작된 프로세스에 영향을 줍니다.
추가 매개 변수 가 없으므로 gflags /k 는 현재 세션에 대해 설정된 시스템 전체 플래그를 표시합니다.
/나는
이미지 파일 설정입니다. 특정 프로세스에 대한 디버깅 플래그를 표시하거나 변경합니다. 이러한 설정은 레지스트리에 저장됩니다. 이 프로세스의 모든 새 인스턴스에 적용되며 변경할 때까지 유효합니다.
추가 매개 변수 가 없으면 gflags /i ImageFile 은 지정된 프로세스에 대해 설정된 플래그를 표시합니다.
/tracedb SizeInMB
프로세스에 대한 사용자 모드 스택 추적 데이터베이스의 최대 크기를 설정합니다. 이 매개 변수를 사용하려면 프로세스에 대해 사용자 모드 스택 추적 데이터베이스 (ust) 플래그를 설정해야 합니다.
SizeInMB 는 소수 단위의 메가바이트 수를 나타내는 정수입니다. 기본값은 최소 크기인 8MB입니다. 최대 크기는 없습니다. 기본 크기로 되돌리려면 SizeInMB를 0으로 설정합니다.
spp
(Windows Vista 이상) 특수 풀 기능을 설정하거나 지웁니다. 예를 들어 예제 14: 특수 풀 구성을 참조 하세요.
PoolTag
(Windows Vista 이상) 특수 풀 기능에 대한 풀 태그를 지정합니다. spp 플래그와 함께만 사용합니다.
Tag1과 같은 PoolTag의 4자 패턴을 입력합니다. ?(단일 문자 대신) 및 * (여러 문자 대체) 와일드카드 문자를 포함할 수 있습니다. 예를 들어 Fat* 또는 Av?4입니다. 풀 태그는 항상 대/소문자를 구분합니다.
0x크기
(Windows Vista 이상) 특수 풀 기능의 크기 범위를 지정합니다. spp 플래그와 함께만 사용합니다. 크기 값을 선택하는 방법에 대한 지침은 특수 풀에서 "할당 크기 선택"을 참조하세요.
/ro
레지스트리에서 개체 참조 추적 설정을 사용하거나 사용하지 않도록 설정하고 표시합니다. 이 설정을 적용하려면 Windows를 다시 시작해야 합니다.
추가 매개 변수 가 없으면 /ro 는 레지스트리에 개체 참조 추적 설정을 표시합니다.
개체 참조 추적을 사용하도록 설정하려면 명령에 하나 이상의 풀 태그(/t PoolTag) 또는 이미지 파일(/i ImageFile)을 포함해야 합니다. 자세한 내용은 예제 15: 개체 참조 추적 사용을 참조하세요.
다음 표에서는 /ro로 유효한 하위 매개 변수를 나열합니다.
/t PoolTags |
지정된 풀 태그를 사용하여 추적을 개체로 제한합니다. 세미콜론(;)을 사용하여 태그 이름을 구분합니다. 최대 16개의 풀 태그를 입력합니다. Tag1과 같은 PoolTags의 4자 패턴을 입력합니다. 둘 이상의 풀 태그를 지정하는 경우 Windows는 지정된 풀 태그를 사용하여 개체를 추적합니다. 풀 태그를 지정하지 않으면 Windows는 이미지에서 만든 모든 개체를 추적합니다. |
/i ImageFile |
지정된 이미지 파일을 사용하여 프로세스에서 만든 개체로 추적을 제한합니다. /i 매개 변수를 사용하여 이미지 파일을 하나만 지정할 수 있습니다. 최대 64자를 사용하여 이미지 파일 이름(예: notepad.exe)을 입력합니다. "시스템" 및 "유휴"는 유효한 이미지 이름이 아닙니다. 이미지 파일을 지정하지 않으면 Windows는 지정된 풀 태그를 사용하여 모든 개체를 추적합니다. 이미지 파일(/i)과 하나 이상의 풀 태그(/t)를 모두 지정하는 경우 Windows는 지정된 이미지에서 만든 지정된 풀 태그를 사용하여 개체를 추적합니다. |
/d |
개체 참조 추적 기능 설정을 지웁니다. /ro와 함께 사용하면 레지스트리의 설정이 지워집니다. |
/p |
영구적인. 추적 데이터는 개체 참조 추적을 사용하지 않도록 설정하거나 컴퓨터가 종료되거나 다시 시작될 때까지 유지됩니다. 기본적으로 개체의 추적 데이터는 개체가 제거될 때 삭제됩니다. |
/코
커널 플래그(런타임) 개체 참조 추적 설정을 사용하거나 사용하지 않도록 설정하고 표시합니다. 이 설정의 변경 내용은 즉시 적용되지만 시스템이 종료되거나 다시 시작될 때 손실됩니다. 자세한 내용은 예제 15: 개체 참조 추적 사용을 참조하세요.
추가 매개 변수 가 없으면 /ko 는 커널 플래그(런타임) 개체 참조 추적 설정을 표시합니다.
개체 참조 추적을 사용하도록 설정하려면 명령에 하나 이상의 풀 태그(/t PoolTag) 또는 이미지 파일(/i ImageFile)을 포함해야 합니다.
다음 표에서는 /ko로 유효한 하위 매개 변수를 나열합니다.
/t PoolTags |
지정된 풀 태그를 사용하여 추적을 개체로 제한합니다. 세미콜론(;)을 사용하여 태그 이름을 구분합니다. 최대 16개의 풀 태그를 입력합니다. Tag1과 같은 PoolTags의 4자 패턴을 입력합니다. 둘 이상의 풀 태그를 지정하는 경우 Windows는 지정된 풀 태그를 사용하여 개체를 추적합니다. 풀 태그를 지정하지 않으면 Windows는 이미지에서 만든 모든 개체를 추적합니다. |
/i ImageFile |
지정된 이미지 파일을 사용하여 프로세스에서 만든 개체로 추적을 제한합니다. /i 매개 변수를 사용하여 이미지 파일을 하나만 지정할 수 있습니다. 이미지 파일을 지정하지 않으면 Windows는 지정된 풀 태그를 사용하여 모든 개체를 추적합니다. 이미지 파일(/i)과 하나 이상의 풀 태그(/t)를 모두 지정하는 경우 Windows는 지정된 이미지에서 만든 지정된 풀 태그를 사용하여 개체를 추적합니다. |
/d |
개체 참조 추적 기능 설정을 지웁니다. /ro와 함께 사용하면 레지스트리의 설정이 지워집니다. |
/p |
영구적인. 추적 데이터는 개체 참조 추적을 사용하지 않도록 설정하거나 컴퓨터가 종료되거나 다시 시작될 때까지 유지됩니다. 기본적으로 개체의 추적 데이터는 개체가 제거될 때 삭제됩니다. |
/p
프로세스에 대한 페이지 힙 확인 옵션을 설정합니다.
추가 매개 변수 가 없으므로 gflags /p 는 페이지 힙 확인을 사용할 이미지 파일 목록을 표시합니다.
페이지 힙 확인은 할당 작업 및 사용 가능한 작업을 포함하여 동적 힙 메모리 작업을 모니터링하고 힙 오류를 감지하면 디버거가 중단됩니다.
/비활성화 ImageFile
지정된 이미지 파일에 대한 페이지 힙 확인(표준 또는 전체)을 해제합니다.
이 명령은 프로세스(gflags /i ImageFile -hpa)에 대해 hpa(페이지 힙 사용) 플래그를 해제하는 것과 같습니다. 명령을 서로 교환하여 사용할 수 있습니다.
/사용 ImageFile
지정된 이미지 파일에 대한 페이지 힙 확인을 켭니다.
기본적으로 /enable 매개 변수는 이미지 파일에 대한 표준 페이지 힙 확인을 켭니다. 이미지 파일에 대해 전체 페이지 힙 확인을 사용하도록 설정하려면 명령에 /full 매개 변수를 추가하거나 +hpa 플래그와 함께 /i 매개 변수를 사용합니다.
/부르다
프로세스에 대한 전체 페이지 힙 확인을 켭니다. 전체 페이지 힙 확인은 예약된 가상 메모리 영역을 각 할당의 끝에 배치합니다.
이 매개 변수를 사용하는 것은 프로세스(gflags /i ImageFile +hpa)에 대해 hpa(페이지 힙 사용) 플래그를 켜는 것과 같습니다. 명령을 서로 교환하여 사용할 수 있습니다.
/거꾸로
예약된 가상 메모리의 영역을 마지막이 아닌 할당의 시작 부분에 배치합니다. 결과적으로 디버거는 버퍼의 끝에 있는 것이 아니라 버퍼의 시작 부분에서 오버런을 트래핑합니다. /full 매개 변수에서만 유효합니다.
/임의의 확률
지정된 확률에 따라 각 할당에 대한 전체 또는 표준 페이지 힙 확인을 선택합니다.
Probability 는 전체 페이지 힙 확인의 확률을 나타내는 0에서 100까지의 10진수 정수입니다. 확률 100은 /full 매개 변수를 사용하는 것과 같습니다. 확률 0은 표준 페이지 힙 확인을 사용하는 것과 같습니다.
/크기 SizeStart SizeEnd
지정된 크기 범위 내의 할당에 대해 전체 페이지 힙 확인을 사용하도록 설정하고 프로세스의 다른 모든 할당에 대해 표준 페이지 힙 확인을 사용하도록 설정합니다.
SizeStart 및 SizeEnd 는 10진수 정수입니다. 기본값은 모든 할당에 대한 표준 페이지 힙 확인입니다.
/주소 AddressStart AddressEnd
지정된 주소 범위의 반환 주소가 런타임 호출 스택에 있는 동안 할당된 메모리에 대해 전체 페이지 힙 확인을 사용하도록 설정합니다. 프로세스의 다른 모든 할당에 대한 표준 페이지 힙 확인을 사용하도록 설정합니다.
이 기능을 사용하려면 피처 할당을 사용하여 함수를 호출하는 모든 함수의 주소를 포함하는 범위를 지정합니다. 호출 함수의 주소는 주의 대상 할당이 발생할 때 호출 스택에 있습니다.
AddressStart 및 AddressEnd 는 할당 스택 추적에서 검색된 주소 범위를 지정합니다. 주소는 16진수 형식(예: 0xAABBCCDD)으로 지정됩니다.
Windows Server 2003 및 이전 시스템에서 /address 매개 변수는 x86 기반 컴퓨터에서만 유효합니다. Windows Vista에서: 지원되는 모든 아키텍처에서 유효합니다.
/dlls DLL[, DLL...]
지정된 DLL에서 요청한 할당에 대해 전체 페이지 힙 확인을 사용하도록 설정하고 프로세스의 다른 모든 할당에 대해 표준 페이지 힙 확인을 사용하도록 설정합니다.
DLL 은 파일 이름 확장명을 포함하여 이진 파일의 이름입니다. 지정된 파일은 실행 중에 프로세스가 로드하는 함수 라이브러리여야 합니다.
/디버그
디버거에서 /enable 매개 변수로 지정된 프로세스를 자동으로 시작합니다.
기본적으로 이 매개 변수는 명령줄 ntsd -g -G -x 및 페이지 힙이 활성화된 NTSD 디버거를 사용하지만 DebuggerCommand 변수를 사용하여 다른 디버거 및 명령줄을 지정할 수 있습니다.
NTSD에 대한 자세한 내용은 CDB 및 NTSD를 사용하여 디버깅을 참조하세요.
이 옵션은 명령 프롬프트에서 시작하기 어려운 프로그램과 다른 프로세스에서 시작하는 프로그램에 유용합니다.
"DebuggerCommand"
디버거 및 디버거로 전송된 명령을 지정합니다. 이 따옴표 붙은 문자열에는 디버거에 대한 정규화된 경로, 디버거 이름 및 디버거가 해석하는 명령 매개 변수가 포함될 수 있습니다. 따옴표가 필요합니다.
명령에 디버거에 대한 경로가 포함된 경우 경로에 다른 따옴표를 포함할 수 없습니다. 다른 따옴표가 나타나면 명령 셸(cmd.exe)이 명령을 잘못 해석합니다.
/kdebug
명령줄 ntsd -g -G -x, 페이지 힙을 사용하도록 설정하고 커널 디버거로 리디렉션된 NTSD 제어를 사용하여 NTSD 디버거에서 /enable 매개 변수로 지정된 프로세스를 자동으로 시작합니다.
NTSD에 대한 자세한 내용은 CDB 및 NTSD를 사용하여 디버깅을 참조하세요.
/정렬
각 할당의 끝을 페이지 끝 경계에 맞춥니다. 이렇게 하면 시작 주소가 8 바이트 블록에 정렬되지 않음을 의미합니다. 기본적으로 힙 관리자는 할당의 시작 주소가 8 바이트 블록에 맞춰지게 합니다.
이 옵션은 오프 바이트 오류를 감지하는 데 사용됩니다. 이 매개 변수를 /full 매개 변수와 함께 사용하면 예약된 가상 메모리 영역이 할당의 마지막 바이트 바로 후에 시작되고 프로세스가 할당을 초과하여 1 바이트를 읽거나 쓰려고 할 때 즉시 오류가 발생합니다.
/decommit
이 옵션은 더 이상 유효하지 않습니다. 허용되지만 무시됩니다.
Windows 2000에 포함된 PageHeap 프로그램(pageheap.exe)은 할당 후에 액세스할 수 없는 페이지를 배치하여 전체 페이지 힙 확인을 구현했습니다. 이 도구 에서 /decommit 매개 변수는 액세스할 수 없는 페이지에 대해 예약된 가상 메모리 영역을 대체했습니다. 이 버전의 GFlags에서는 예약된 가상 메모리 영역이 항상 전체 페이지 힙 확인을 구현하는 데 사용됩니다.
/notraces
런타임 스택 추적이 저장되지 않도록 지정합니다.
이 옵션을 사용하면 성능이 약간 향상되지만 디버깅이 훨씬 더 어려워집니다. 이 매개 변수는 유효하지만 사용하지 않는 것이 좋습니다.
/결점
지정된 시간 제한 후에 프로그램의 메모리 할당이 지정된 속도로 실패하도록 합니다.
이 매개 변수는 테스트 중인 이미지 파일("오류 주입")에 힙 할당 오류를 삽입하여 프로그램이 메모리 부족 상태에서 실행될 때 발생할 수 있는 것처럼 일부 메모리 할당이 실패합니다. 이 테스트는 리소스 해제 실패와 같은 할당 오류를 처리하는 오류를 감지하는 데 도움이 됩니다.
요금 |
할당이 실패할 확률을 나타내는 1(.01%)에서 10000(100%)까지의 10진수를 지정합니다. 기본값은 100(1%)입니다. |
TimeOut |
프로그램의 시작과 오류 주입 루틴의 시작 사이의 시간 간격을 결정합니다. TimeOut 은 초 단위로 측정됩니다. 기본값은 5(초)입니다. |
/누수
프로세스가 종료될 때 힙 누수 확인
/leaks 매개 변수는 전체 페이지 힙을 사용하지 않도록 설정합니다. /leaks를 사용하면 /backwards와 같은 /full 매개 변수를 수정하는 /full 매개 변수 및 매개 변수가 무시되고 GFlags는 누수 검사를 사용하여 표준 페이지 힙 확인을 수행합니다.
/보호하다
힙 내부 구조를 보호합니다. 이 테스트는 임의 힙 손상을 검색하는 데 사용됩니다. 실행 속도가 상당히 느려질 수 있습니다.
/no_sync
동기화되지 않은 액세스를 확인합니다. 이 매개 변수는 HEAP_NO_SERIALIZE 플래그를 사용하여 만든 힙이 다른 스레드에서 액세스되는 것을 감지하면 중단을 발생합니다.
이 플래그를 사용하여 사용자 지정된 힙 관리자가 포함된 프로그램을 디버그하지 마세요. 힙 액세스를 동기화하는 함수는 페이지 힙 검증 도구가 존재하지 않는 동기화 오류를 보고하게 합니다.
/no_lock_checks
중요한 섹션 검증 도구를 사용하지 않도록 설정합니다.
/?
GFlags에 대한 도움말을 표시합니다. /p를 사용하면 /? GFlags의 페이지 힙 확인 옵션에 대한 도움말이 표시됩니다.
코멘트
매개 변수 없이 gflags를 입력하면 전역 플래그 대화 상자가 열립니다.
추가 매개 변수 없이 gflags /p를 입력하면 페이지 힙 확인을 사용하도록 설정된 프로그램 목록이 표시됩니다.
모든 플래그를 지우려면 플래그를 -FFFFFFFF로 설정합니다. (설정 플래그 를 0으로 지정하면 현재 플래그 값에 0이 추가됩니다. 모든 플래그를 지우지는 않습니다.)
이미지 파일의 플래그를 FFFFFFFF로 설정하면 Windows에서 모든 플래그를 지우고 이미지 파일의 레지스트리 하위 키에서 GlobalFlag 항목을 삭제합니다. 하위 키는 그대로 유지합니다.
페이지 힙 /enable 작업에 대한 /full, /random, /size, /address 및 /dlls 매개 변수는 페이지 힙 확인 및 사용된 확인 방법을 적용할 할당을 결정합니다. 각 명령에서 이러한 매개 변수 중 하나만 사용할 수 있습니다. 기본값은 프로세스의 모든 할당에 대한 표준 페이지 힙 확인입니다. 나머지 매개 변수는 페이지 힙 확인을 위한 옵션을 설정합니다.
GFlags의 페이지 힙 기능은 표준 Windows 힙 관리자 함수(HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new, new,new[] 또는 해당 할당 취소 함수) 또는 표준 힙 관리자 함수를 호출하는 사용자 지정 작업을 사용하는 힙 메모리 할당만 모니터링합니다.
프로그램에 대해 전체 또는 표준 페이지 힙 확인을 사용할 수 있는지 여부를 확인하려면 명령줄에서 gflags /p를 입력합니다. 결과 디스플레이 에서 추적은 표준 페이지 힙 확인이 프로그램에 대해 사용하도록 설정되어 있음을 나타내고 전체 추적 은 프로그램에 대해 전체 페이지 힙 확인이 사용하도록 설정되어 있음을 나타냅니다.
/enable 매개 변수는 레지스트리의 이미지 파일에 대한 hpa(페이지 힙 사용) 플래그를 설정합니다. 그러나 /enable 매개 변수는 이미지 파일에 대한 전체 힙 확인을 켜는 +hpa 플래그가 있는 /i 매개 변수와 달리 기본적으로 이미지 파일에 대한 표준 힙 확인을 켭니다.
표준 페이지 힙 확인은 할당이 끝날 때 임의의 패턴을 배치하고 힙 블록이 해제되면 패턴을 검사합니다. 전체 페이지 힙 확인은 예약된 가상 메모리 영역을 각 할당의 끝에 배치합니다.
전체 페이지 힙 확인은 시스템 메모리를 빠르게 사용할 수 있습니다. 메모리 집약적 프로세스에 대해 전체 페이지 힙 확인을 사용하도록 설정하려면 /size 또는 /dlls 매개 변수를 사용합니다.
디버깅에 전역 플래그를 사용한 후 gflags /p /disable 명령을 제출하여 페이지 힙 확인을 해제하고 연결된 레지스트리 항목을 삭제합니다. 그렇지 않으면 디버거가 읽는 항목이 레지스트리에 남아 있습니다. 페이지 힙 확인을 해제하지만 레지스트리 항목을 삭제하지 않으므로 이 작업에 gflags /i hpa 명령을 사용할 수 없습니다.
기본적으로 Windows Vista 이상 버전의 Windows에서는 프로그램별 설정(이미지 파일 플래그 및 페이지 힙 확인 설정)이 현재 사용자 계정에 저장됩니다.
이 버전의 GFlags에는 GFlags에 대해 개발 중인 기능을 사용하도록 설정하는 -v 옵션이 포함되어 있습니다. 그러나 이러한 기능은 아직 완료되지 않았으므로 문서화되지 않았습니다.