반응형

Visual Studio를 사용하다 터미널(콘솔) 창을 열어야 할 경우가 있다. Window+R - cmd 명령을 실행해 작업 경로로 이동해도 되지만 Visual Studio에서 바로 작업 경로 터미널 창을 열 수 있다.

 

View - Terminal (단축키: Ctrl+`)

 

Developer PowerShell 창이 열린다.

 

PowerShell 창에서 작업해도 되지만 원한다면 Deveoper Command Prompt로 바꿀 수 있다.

 

Options - Terminal 을 확인해 보면 Developer PowerShell이 기본으로 설정되어 있다.

 

Developer Command Prompt를 기본으로 설정한다. (Set as Default)

 

View - Terminal (단축키: Ctrl+`) 을 선택하면 Developer Command Prompt가 열린다.

 

Tools - Command Line - Developer Command Prompt / Developer PowerShell 을 선택해도 원하는 창을 바로 열 수 있다.

 

차이가 있다면 Visual Studio에서 열리는게 아닌, 독립된 창으로 열린다.

 

반응형
Posted by J-sean
:
반응형

비주얼 스튜디오에서 코드를 자동 완성 시켜주는 기능을 사용해 보자.

 

 

 

 

 

 

 

※ 참고

Visual Studio IntelliCode

 

반응형
Posted by J-sean
:
반응형

간단한 비주얼 베이직 프로그램으로 VB Decompiler 사용법을 익혀보자.

 

Music_Player.zip
9.52MB

 

 

Music_Player 실행 화면.

 

VB Decompiler로 Music_Player를 로드하면 간단한 프로그램 정보를 확인할 수 있다.

 

Forms - FrmMain에서 프로그램에 쓰인 여러가지 컨트롤 정보를 확인 할 수 있다.

예를 들어 STOP 버튼은 Caption으로 '■' 문자를 사용하고 (1680, 1560, 615, 495)에 위치하며 이벤트 처리 함수는 CMD_STOP이다.

 

CMD_STOP_Click() 의 디컴파일 내용을 확인 할 수 있다.

 

 

디스어셈블 내용도 확인 할 수 있다.

 

x32dbg에서 CMD_STOP()의 주소 00403EE0 로 이동해도 같은 내용을 확인할 수 있다.

 

ClsMCI에서 그 외 정의된 처리 함수들을 확인할 수 있다.

 

반응형
Posted by J-sean
:
반응형

Visual Studio Debugging Breakpoint

 

Use the right type of breakpoint

 

 

Log to Output window

 

 

반응형
Posted by J-sean
:
반응형

비주얼 스튜디오로 어셈블리 디버깅 시 레지스터 창 플래그 정보가 이상하게 표시되어 그 의미를 알기 어렵다. 어떤 의미를 가지는지 확인해 보자.

 

 

Flags Set value
Overflow OV = 1
Direction UP = 1
Interrupt EI = 1
Sign PL = 1
Zero ZR = 1
Auxiliary carry AC = 1
Parity PE  = 1
Carry CY = 1

 

※ 참고 1

About the Registers Window in Visual Studio

 

※ 참고 2

디버깅시 레지스터 윈도우가 뜨지 않는다면 아래와 같이 설정을 변경한다.

 

Debug - Windows - Registers 선택

 

Registers 윈도우 우클릭 - Flags 선택

 

반응형
Posted by J-sean
:
반응형

비주얼 스튜디오로 어셈블리 프로젝트를 시작해 보자.

 

Empty Project를 만든다.

 

프로젝트에 적당한 파일을 add한다. 확장자만 asm으로 지정하면 된다.

 

Solution Explorer - Project Name 우클릭 - Build Dependencies - Build Customizations...

 

masm(.targets, .props)를 선택한다.

 

 

소스파일 우클릭 - Properties

 

Item Type - Microsoft Macro Assembler를 선택한다.

 

32비트 프로그램을 개발한다면 x86을 선택한다.

 

별도의 라이브러리를 사용한다면 아래와 같이 세팅한다.

Irvine.zip
1.30MB

 

Solution Explorer - Project Name 우클릭 - Properties

 

 

사용할 라이브러리의 디렉토리 경로를 입력한다.

 

라이브러리 이름을 입력한다.

 

Microsoft Macro Assembler - General - Include Paths에 라이브러리 경로를 한 번 더 입력한다.

 

소스를 입력한다.

 

 

빌드하고 실행한다.

 

Syntax Highlighter는 AsmDude나 ChASM을 사용한다.

 

ChASM - works with Visual Studio 2022

AsmDude - works with 2015, 2017, 2019

 

ChASM.vsix
0.27MB

 

※ 참고

 

Release 모드에서 SAFESEH 관련 LNK1281, LNK2026 에러가 발생할 수 있다.

 

Microsoft Macro Assembler - Advanced - Use Safe Exception Handlers를 Yes (/safeseh)로 바꾼다.

 

 

작업중인 Sorce.obj 파일의 에러는 해결되었지만 라이브러리 파일의 에러는 해결되지 않았다.

 

Linker - Advanced - Image Has Safe Exception Handlers를 No (/SAFESEH:NO)로 바꾼다.

 

에러가 사라졌다.

 

※ 참고

리스트 파일을 생성해야 한다면 아래와 같이 세팅한다.

 

Microsoft Macro Assembler - Listing File - Assembled Code Listing File - 파일 이름을 지정한다.

 

 

프로젝트를 빌드하면 리스트 파일이 생성된다.

 

반응형
Posted by J-sean
:
반응형

C/C++로 작성한 코드를 어셈블리어로 번역해 보자.

 

C/C++ 소스를 작성한다.

 

Solution Explorer - Source File - 우클릭 - Properties

 

Assembler Output - Assembly-Only Listing (/FA)를 선택한다.

Assembly-Only Listing: 어셈블리어만 출력한다.

Assembly With Machine Code: 어셈블리어와 기계어 코드를 출력한다.

Assembly With Source Code: 어셈블리러와 소스 코드를 출력한다.

Assembly, Machine Code and Source: 어셈블리, 기계어 코드 그리고 소스코드를 출력한다.

 

 

프로젝트를 빌드하면 어셈블리 파일이 생성된다.

 

C/C++ 소스 코드가 어셈블리어로 변환되었다.

 

반응형
Posted by J-sean
:
반응형

유니티와 Visual Studio를 이용해 디버깅 해 보자.

 

Cube를 하나 생성하고 스크립트를 추가한다.

 

매 프레임마다 X축으로 1 이동하는 스크립트를 작성한다.

 

이동하는 코드에 브레이크 포인트를 설정한다. (F9)

 

디버깅을 시작한다. (Attach to Unity 버튼을 클릭하거나 F5를 누른다)

 

 

유니티에 C# 디버거가 연결되었다는 창이 뜬다. 'Enable debugging for this session' 버튼을 클릭한다.

 

오른쪽 하단에 'Debugger Attached' 표시(파란색 벌레)가 나타난다. Play 버튼을 클릭한다.

 

브레이크 포인트에서 실행이 멈춘다.

 

디버거와 유니티를 확인하며 디버깅을 진행한다.

 

 

유니티 실행시 처음부터 디버깅이 가능하게 설정할 수 도 있다. (Code Optimization On Startup을 Debug로 바꾼다)

 

반응형
Posted by J-sean
: