반응형

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

 

 

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
:
반응형

Qt6는 더 이상 오프라인 인스톨러를 제공하지 않는다. 오픈소스 온라인 인스톨러를 다운 받고 설치하자.

예전에는 Qt에 가입할 필요는 없었지만 지금은 아이디가 필요하다. 설치 전 미리 가입하자.

 

Latest releases - Qt - Qt 6.X.X - MSVC 2019 64-bit 만 선택하고 Developer and Designer Tools는 기본 상태 그대로 설치한다.

 

Qt 설치가 완료되면 Visual Studio - Extensions - Manage Extensions를 클릭한다.

 

Online - Visual Studio Marketplace에서 qt를 검색하고 Qt Visual Studio Tools를 설치한다. (Visual Studio 재시작이 필요하다)

 

Extensions - Qt VS Tools - Options를 클릭한다.

 

 

사용할 Qt를 추가해 주어야 한다. +아이콘을 클릭하고 Path를 클릭한다.

 

Qt가 설치된 디렉토리에서 qmake.exe 파일을 선택한다.

 

위 그림과 같이 설정 되었다면 OK를 클릭한다.

 

Qt Widgets Application 프로젝트를 만들자.

 

 

프로젝트 이름, 위치등을 지정하고 Create 버튼을 클릭한다.

 

Qt Widgets Application Wizard가 실행된다.

 

적당한 옵션을 선택한다.

 

적당한 옵션을 지정하고 Finish 버튼을 클릭한다.

 

 

소스파일이 표시된다.

 

Solution Explorer에서 UI 디자인 파일을 더블 클릭한다.

 

UI 디자인 화면이 표시된다.

 

Project Property Pages - Configuration Properties - C/C++ - Language를 클릭한다

 

 

Qt6는 C++ 17을 사용한다.

 

소스나 UI 수정없이 빌드하고 실행했을 때 위와 같은 위도우가 뜨면 성공이다. 

 

그런데 UI 디자인툴에서 PushButton - 우클릭을 해도 'Go to slot...'에 해당하는 명령어가 나오지 않는다.

그 뿐만 아니라 프로젝트 생성시 Qt Creator와 생성되는 파일도 다르고 코드를 작성해도 이해할 수 없는 방식으로 작동한다.

 

Qt Creator를 실행하고 Projects - New를 클릭한다.

 

 

Application (Qt) - Qt Widgets Application을 선택한다. 나머지 옵션은 적당히 선택한다.

 

Visual Studio와는 약간 다른 파일들이 생성되었다.

 

Forms - mainwindow.ui를 더블 클릭한다.

 

Label과 Pushbutton을 적당히 배치하고 Pushbutton에서 우클릭 - Go to slot...을 클릭한다.

 

 

clicked()를 선택하고 OK 버튼을 클릭한다.

 

mainwindow.cpp에 on_pushButton_clicked()가 생성되었다. (mainwindow.h 파일도 변경된다)

 

mainwindow.h 파일을 위와 같이 수정한다.

 

mainwindow.cpp 파일을 위와 같이 수정하고 빌드한다.

 

 

프로젝트를 실행하면 위와 같은 윈도우가 나타난다.

 

Pushbutton을 클릭하면 Label이 변경된다.

 

Pushbutton을 클릭할때마다 Label은 계속 변경된다.

다른 간단한 예제는 아래 링크를 참고한다.

2019.01.16 - [C, C++] - Qt 설치 및 간단한 사용 예

2019.02.21 - [C, C++] - Qt 스프라이트 애니매이션

 

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

리눅스(우분투)에 설치된 비주얼 스튜디오에서 파이썬을 프로그래밍해보자.


pip가 설치되지 않았다면 설치한다.


폴더를 만들어 준다.


폴더내에 파이썬 소스를 작성할 파일을 만든다. 확장자는 .py로 한다.


Python extension을 설치한다.



Linter pylint가 설치되지 않았다는 메세지가 나온다. Install 한다.


소스를 입력하고 Ctrl+F5키를 누르면 실행된다.

Run - Run Without Debugging을 선택해도 된다.


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

리눅스(우분투)에서 비주얼 스튜디오 코드를 설치하고 코딩해 보자.


비주얼 스튜디오 홈페이지에 접속하고 Debian, Ubuntu용 .deb을 선택한다.


설치파일을 다운로드한다.


다운로드한 설치파일을 실행한다.


Install을 선택한다.



설치는 간단히 끝난다.


build-essential을 설치한다.


설치된 Visual Studio Code를 실행한다.


Welcome 화면이 나타난다.



File - Open Folder... 를 선택한다.


원하는 폴더를 만들고 선택한다.


EXPLORER - 위에서 만든 폴더에서 New File을 선택한다.


원하는 파일이름을 지정한다. C++ 프로그램을 만들기 위해 확장자는 .cpp로 지정한다.



Extensions에서 c/c++를 설치한다.


간단한 C++ 코드를 입력한다.


Terminal - Configure Default Build Task...를 선택한다.


C/C++: g++ build active file을 선택한다.



Terminal - Run Build Task...를 선택한다.


빌드가 진행된다.


위에서 만든 폴더로 가면 빌드된 파일이 있다. 실행해 본다.


task를 변경하고 싶다면 아래 예처럼 tasks.json 파일을 변경한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
    "version""2.0.0",
    "runner""terminal",
    "type""shell",
    "echoCommand"true,
    "presentation": {
        "reveal""always"
    },
    "tasks": [
        // C++
        {
            "label""save and compile for C++",
            "command""g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group""build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp""^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file"1,
                    "line"2,
                    "column"3,
                    "severity"4,
                    "message"5
                }
            }
        },
        // C
        {
            "label""save and compile for C",
            "command""gcc",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group""build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp""^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file"1,
                    "line"2,
                    "column"3,
                    "severity"4,
                    "message"5
                }
            }
        },
        {
            "label""execute",
            "command""cd ${fileDirname} && ./${fileBasenameNoExtension}",
            "group""test"
        }
    ]
}


tasks.json 예제


필요하다면 File -Preferences - Keyboard Shortcuts 에서 새로만든 task의 단축키를 지정할 수 있다.


Open Keyboard Shortcuts (JSON) 아이콘을 클릭한다.


아래 예처럼 keybindings.json 파일을 수정한다.



1
2
3
4
5
6
7
[
    // Compile
    { "key""ctrl+shift+1""command""workbench.action.tasks.build" },
 
    // Execute
    { "key""ctrl+shift+2""command""workbench.action.tasks.test" }
]


keybidings.json 예제


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

Visual Studio 설치 시 'Python 개발' 항목을 선택 하면 Python 언어 지원, Python miniconda등 여러 가지 프로그램이 함께 설치 된다. 다른 응용 프로그램 설치 시 또 다른 버전의 Python이 설치 되기도 하고 업데이트 하기 위해 Python 홈페이지에서 받은 최신 버전 Python을 설치 했다면 최신 버전의 또 다른 Python이 컴퓨터에 설치된다.


Visual Studio에서 컴퓨터에 설치된 여러가지 Python 중 원하는 버전을 선택해 사용할 수 있다.


Python 프로젝트를 만들고 Solution Explorer - Python Environments 마우스 우클릭 - Add Environments... 를 선택 한다.


Existing environment - Environment - 원하는 버전의 Python을 선택 한다. (3.8)


다시 Solution Explorer에서 확인해 보면 원하는 Python이 선택되어 있다. (3.8)



Visual Studio 설치 시 'Python 개발' 항목을 선택하면 'Python 언어 지원'외 특정 버전의 Python이 몇 가지 항목과 함께 설치 된다.


특정 버전의 Python과 기타 항목을 모두 선택 해제 한다.


Python 프로젝트를 만들면 따로 설치한 최신 버전의 Python으로 환경이 구성 된다.


반응형
Posted by J-sean
: