디스어셈블리 창에는 컴파일러에서 만든 지침에 해당하는 어셈블리 코드가 표시됩니다. 관리 코드를 디버깅하는 경우 이러한 어셈블리 지침은 Visual Studio 컴파일러에서 만든 MSIL(Microsoft Intermediate Language)이 아니라 JIT(Just-In-Time) 컴파일러에서 만든 네이티브 코드에 해당합니다.
비고
디스어셈블리 창을 최대한 활용하려면 어셈블리 언어 프로그래밍의 기본 사항을 이해하거나 알아봅니다. Intel 명령 집합에 대한 참조 자료는 아키텍처 설명서의 두 번째 볼륨에서 찾을 수 있습니다. 이 자료는 일반적으로 AMD 명령 집합에도 적용됩니다.
이 기능은 주소 수준 디버깅을 사용하는 경우에만 사용할 수 있습니다. 스크립트 또는 SQL 디버깅에 사용할 수 없습니다.
어셈블리 지침 외에도 디스어셈블리 창에는 다음과 같은 선택적 정보가 표시되어 있습니다.
각 명령이 있는 메모리 주소입니다. 네이티브 애플리케이션의 경우 실제 메모리 주소입니다. Visual Basic 또는 C#의 경우, 함수 시작 지점에서 오프셋을 계산합니다.
어셈블리 코드가 파생되는 소스 코드입니다.
코드 바이트, 즉 실제 컴퓨터 또는 MSIL 명령의 바이트 표현입니다.
메모리 주소의 기호 이름입니다.
소스 코드에 해당하는 줄 번호입니다.
어셈블리 언어 명령은 명령 이름에 대한 약어인 니모닉과 변수, 레지스터 및 상수에 대한 기호 로 구성됩니다. 각 컴퓨터 언어 명령은 필요에 따라 하나의 어셈블리 언어 니모닉과 하나 이상의 기호로 표시됩니다.
어셈블리 코드는 프로세서 레지스터 또는 관리 코드의 경우 공용 언어 런타임 레지스터에 크게 의존합니다. 레지스터 창과 함께 디스어셈블리 창을 사용하면 레지스터 내용을 검사할 수 있습니다.
어셈블리 언어가 아닌 원시 숫자 형식으로 컴퓨터 코드 지침을 보려면 메모리 창을 사용하거나 디스어셈블리 창의 바로 가기 메뉴에서 코드 바이트를 선택합니다.
디스어셈블리 창 사용
디스어셈블리 창을 사용하도록 설정하려면 도구>옵션>디버깅에서 주소 수준 디버깅 사용을 선택합니다.
디버깅하는 동안 디스어셈블리 창을 열려면Windows>디스어셈블리>를 선택하거나 Ctrl + + 를 누릅니다.
비고
표시되는 대화 상자 및 메뉴 명령은 활성 설정 또는 버전에 따라 이 문서에 설명된 것과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기 선택합니다. 자세한 내용은 모든 설정을 다시 설정참조하세요.
선택적 정보를 켜거나 끄려면 디스어셈블리 창을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 원하는 옵션을 설정하거나 선택 취소합니다.
왼쪽 여백의 노란색 화살표는 현재 실행 지점을 표시합니다. 네이티브 코드의 경우 실행 지점은 CPU의 프로그램 카운터에 해당합니다. 이 위치에는 프로그램에서 실행될 다음 명령이 표시됩니다.
메모리에서 페이지를 위로 올리거나 아래로 내리기
메모리 창 또는 디스어셈블리 창에서 메모리 내용을 볼 때 세로 스크롤 막대를 사용하여 메모리 공간에서 위아래로 이동할 수 있습니다.
아래로 페이지를 이동(더 높은 메모리 주소로 이동)하려면 스크롤 상자 아래의 세로 스크롤 막대를 클릭합니다.
페이지를 위로 이동(낮은 메모리 주소로 이동)하려면 엄지 손가락 위의 세로 스크롤 막대를 클릭합니다.
또한 세로 스크롤 막대는 비표준 방식으로 작동합니다. 최신 컴퓨터의 주소 공간은 매우 크며 스크롤 막대 엄지 손가락을 잡고 임의의 위치로 끌어 쉽게 길을 잃을 수 있습니다. 이러한 이유로 엄지손가락은 "스프링이 장착되어" 항상 스크롤 바의 중앙에 위치합니다. 네이티브 코드 애플리케이션에서는 위로 또는 아래로 페이지할 수 있지만 자유롭게 스크롤할 수는 없습니다.
관리되는 애플리케이션에서 디스어셈블리는 하나의 함수로 제한되며 정상적으로 스크롤할 수 있습니다.
창 아래쪽에 더 높은 주소가 나타나는 것을 볼 수 있습니다. 더 높은 주소를 보려면 위로 이동하지 않고 아래로 이동해야 합니다.
명령문을 위 또는 아래로 한 단계 이동
- 세로 스크롤 막대의 위쪽 또는 아래쪽에 있는 화살표를 클릭합니다.
관련 콘텐츠
- 디버거 데이터 보기
- 방법: 레지스터 창 사용