-
[개발 지식] visual studio 관련 Debug/Release, x86/x64, 로컬/원격 디버거개발 지식 2022. 4. 7. 09:54
* Debug/Release (1)
출처 : https://salon.tistory.com/19
- 디버그(Debug) : 시스템의 논리적인 오류나 비정상적 연산을 찾아내고 그 원인을 밝히고 수정하는 작업 과정
- 릴리스(Release) : 소프트웨어 배포 생명 주기에서 컴퓨터 소프트웨어의 배포를 의미
디버그 모드와 릴리스 모드는 정의에서도 알 수 있듯이 컴파일 목적이 서로 다른 빌드입니다.
Debug Release 코드 최적화 여부 X O 파일 크기 ↑ ↓ 코드 실행 속도 ↓ ↑ 메모리 사용량 ↑ ↓ 컴파일 속도 ↑ ↓ - 코드 최적화
코드 최적화란 언어를 컴파일하는 과정에서 컴파일러가 판단하여 최적화를 진행함을 의미합니다.
- 파일 크기
최적화로 인해 Release 모드로 컴파일 한 것의 용량이 더 작습니다.
- 코드 실행 속도
Debug 모드는 디버그에 필요한 정보들을 실행 시, 상시 체크하므로 속도가 느립니다.
디버깅 정보를 실행코드에 포함하므로.
- 메모리 사용량
Release 모드는 초기화를 하지 않으며, 같은 문자열이라도 서로 다른 공간에 할당됩니다.
* Debug/Release (2)
출처 : https://coding-factory.tistory.com/648
코드 최적화는 고급 프로그래밍 언어(C언어나 C++)를 컴파일하는 과정에서 컴파일러가 판단하여 더 효율적인 코드로 바꿀 수 있는 부분을 판단하여 바꿔주는데 여기서 말하는 최적화는 바로 이것을 뜻합니다.
Release모드에서 컴파일을 하면 코드 최적화가 되어 속도가 빨라진다는 말이 바로 이것을 의미합니다. 하지만 이런 식으로 코드 최적화를 하게 되면 소스 코드와 생성된 명령 간의 관계가 복잡해지므로 중단점이 제대로 안 찍히는 등의 문제가 발생하여 디버깅이 복잡해진다는 단점은 있습니다.
Debug모드에서는 컴파일할때 코드의 안정성을 위해 여러 가지 장치를 추가합니다.
Release모드는 최적화를, Debug모드는 안정성을 중시했다. 이렇게 정의할 수 있을 것 같습니다.
Release로 컴파일한 것이 용량이 더 적은 것을 확인하실 수 있습니다.
* x86/x64
출처 : https://www.inflearn.com/questions/349205
x86 패키지는 32비트 Windows용
x64 패키지는 64비트 Windows용
* 로컬/원격 디버거
출처 : https://joyho.tistory.com/3
보통은 개발 환경을 Local PC에 설치하여 직접 디버깅을 하는것이 가장 빠르면서도 좋은 환경이긴 하나
때에 따라 보안등의 이유로 부득이하게 개발 환경을 설치 하기 어려울 경우 원격 디버깅을 사용하면
실제 로컬과 비슷한 수준의 디버깅을 하실 수 있습니다.
간단하게 개념도를 보면 아래와 같습니다.
위와 같은 원격 디버깅을 진행 하시기 위해서는 우선 네트워크 연결을 하여 Remote PC에
디버깅 심볼과 바이너리를 받을수 있도록 공유 폴더를 만들어 두시고 또한 비주얼 스튜디오에서 제공하는
Remote Debugging Monitor(msvsmon.exe) 툴을 Remote PC에서 실행 할 수 있도록 복사 하셔야 합니다.
결론적으로 위 프로그램이 Host PC의 Runtime시에 원격 디버거 역활을 하게 됩니다.
'개발 지식' 카테고리의 다른 글
[개발 지식] 컴파일, 링크, 디버그, 빌드 (0) 2022.04.07 [개발 지식] C/C++ 외부 라이브러리 dll/lib 차이점 (0) 2022.04.07 소켓으로 문자열 전송 (TCP/IP 통신) (0) 2022.04.05 [개발 지식] 코드에서 해당 파일로 바로가기 단축키 F12 (0) 2022.04.04 [개발 지식] webserver 만들기 (0) 2022.04.04