기호 구문 및 기호 일치

기호를 사용하면 디버깅 중인 프로그램에서 사용하는 토큰을 직접 조작할 수 있습니다. 예를 들어 명령 bp기본 사용하여 함수 기본 중단점을 설정하거나 dd MyInt L1 명령으로 MyInt 정수 변수를 표시할 수 있습니다.

대부분의 경우 디버거 명령에서 기호를 매개 변수로 사용할 수 있습니다. 대부분의 숫자 매개 변수에 대해 지원되며 일부 텍스트 매개 변수에서도 지원됩니다. 기호 구문에 대한 일반적인 규칙 외에도 이러한 각 경우에 적용되는 기호 구문 규칙도 있습니다.

일반 기호 구문 규칙

기호 이름은 하나 이상의 문자로 구성되지만 항상 문자, 밑줄(_), 물음표(?) 또는 달러 기호($)로 시작합니다.

기호 이름은 모듈 이름으로 한정될 수 있습니다. 느낌표(!)는 모듈 이름을 기호(instance, mymodule!기본)와 구분합니다. 모듈 이름을 사용하지 않는 경우에도 기호 앞에 느낌표가 추가될 수 있습니다. 모듈 이름이 없는 느낌표를 사용하면 지역 변수의 경우에도 매개 변수가 16진수가 아닌 이름임을 디버거 명령에 나타내는 데 특히 유용할 수 있습니다. 예를 들어 변수 페이드 는 느낌표가 접두사이거나 -n 옵션을 사용하지 않는 한 dt(표시 형식) 명령에서 주소로 읽습니다. 그러나 기호가 로컬임을 지정하려면 $!lime에서와 같이 달러 기호( $ ) 및 느낌표(! )로 앞에 옵니다.

기호 이름은 대/소문자를 구분하지 않습니다. 즉, 프로그램에 myIntMyInt 가 있으면 디버거에서 제대로 이해되지 않습니다. 이러한 명령 중 하나를 참조하는 모든 명령은 명령의 대문자 표시 방법에 관계없이 다른 명령에 액세스할 수 있습니다.

숫자 식의 기호 구문

디버거는 MASM(Microsoft Macro Assembler) 식과 C++ 식의 두 가지 다른 종류의 식을 이해합니다. 기호에 관한 한 이러한 두 가지 형태의 구문은 다음과 같습니다.

  • MASM 식에서 각 기호는 주소로 해석됩니다. 기호가 참조하는 내용에 따라 전역 변수, 지역 변수, 함수, 세그먼트, 모듈 또는 기타 인식된 레이블의 주소가 됩니다.

  • C++ 식에서 각 기호는 해당 형식에 따라 해석됩니다. 기호가 참조하는 내용에 따라 정수, 데이터 구조, 함수 포인터 또는 기타 데이터 형식으로 해석될 수 있습니다. C++ 데이터 형식(예: 수정되지 않은 모듈 이름)에 해당하지 않는 기호는 구문 오류가 발생합니다.

각 구문 유형을 사용하는 시기와 방법에 대한 설명은 식 평가를 참조하세요.

MASM 식 구문을 사용하는 경우 16진수 또는 레지스터로 해석될 수 있는 기호(예: BadFeed, ebX)는 항상 느낌표 앞에 접두사를 지정해야 합니다. 이렇게 하면 디버거가 이를 기호로 인식합니다.

ss(기호 접미사 설정) 명령을 사용하여 기호 접미사를 설정할 수 있습니다. 이렇게 하면 디버거에서 찾을 수 없는 기호 이름에 "A" 또는 "W"를 자동으로 추가하도록 지시합니다.

많은 Win32 루틴이 ASCII 및 유니코드 버전 모두에 존재합니다. 이러한 루틴에는 각각 이름 끝에 "A" 또는 "W"가 추가되는 경우가 많습니다. 기호 접미사를 사용하면 이러한 기호를 검색할 때 디버거가 도움이 됩니다.

접미사 일치는 기본적으로 활성화되지 않습니다.

텍스트 식의 기호 구문

기호는 일부 명령의 텍스트 매개 변수(예: bm(중단점 설정)x(기호 검사)에서 사용할 수 있습니다.

이러한 텍스트 매개 변수는 다양한 와일드카드 및 지정자를 지원합니다. 자세한 내용은 문자열 와일드카드 구문을 참조하세요. 표준 문자열 와일드카드 외에도 기호를 지정하는 데 사용되는 텍스트 식은 선행 밑줄로 접두사를 지정할 수 있습니다. 이를 기호와 일치시킬 때 디버거는 이를 밑줄 수량(0)으로 처리합니다.

기호 접미사는 텍스트 식에서 기호를 일치시키는 경우 사용되지 않습니다.