디버깅에 도움을 주는 컴파일러와 링커옵션 정리
Tip & Tech/VS 프로젝트 설정 / 2011. 1. 7. 03:21
Visual C++ (.NET 기준)에서 디버깅 시 유용하게 사용할 수 있는 컴파일옵션들을 정리해 보았습니다. 하나하나 다 외우질 못해 프린트해서 그때그때 사용하고 있습니다. ^^
도움이 될 지 모르겠네요.
/EP /P | C/C++ | Preprocessor | Generate Preprocessed
File (파일전처리) |
전처리 코드에 대한 내용을 소스파일.i 파일로 볼 수 있다. |
/C | C/C++ | Preprocessor | Keep Comments (주석유지) |
위를 설정하고 이것도 설정하면 선택하면 전처리코드 위의 주석도 유지하면서 보여 줄 것이다. |
/X | C/C++ | Preprocessor | Ignore Standard Include Path (표준 포함경로무시) |
표준 인클루드 경로 무시 |
/Zp | C/C++ | Code Generation | Struct Member Alignment (구조체 맴버 맞춤) |
#pragma pack 지시자를 사용하는 것이 더 좋을 것 같다. |
/Wp64 | C/C++ | General | Detect 64-bit Portability Issues (64비트 이식성 문제 검색) |
나중 64비트 호완성을 돕기위해 설정을 해 두는 것이 좋다. |
/RTC | C/C++ | Code Generation | Smaller Type Check (작은 형식 검사) |
/RTCc : 값을 작은 데이터 형식으로 변환할 때 데이터손실이 없는 지 검사한다. |
Basic Runtime Checks (기본 런타임 검사) |
/RTCu : 초기화되지 않은 변수참조를 추적한다. /RTCs : 모든 지역변수들을 0xCC로 초기화 하여 훌륭한 스택 프레임 검사가 로컬변수 언더런과 오버런을 감지하고 스택 충돌에 대해서 스택 포인터를 검증하도록 한다. /RTCsu : 위의 두개 모두 포함 |
|||
/GS | C/C++ | Code Generation | Buffer Security Check (버퍼 보안 검사) |
바이러스 작성자들의 가장 일반적인 공격인 리턴주소를 악성코드로 리다이렉트 할 수 있도록 하는 버퍼오버런공격을 막아주는 것이다. |
/O(num) | C/C++ | Optimization | Optimization (최적화) |
/O1(크기최소화), /O2(속도최대화:디폴트) 마이크로소프트 제품은 모두 /O1으로 컴파일..이것으로 컴파일 할 때 같이 SWS(Smooth Working Set)유틸리티를 사용해서 공통적으로 사용하는 함수들을 앞으로 배치되도록 해야 한다.(속도도 높이기 위해) |
/GL | Main | General | Whole Program
Optimization (전체프로그램최적화) |
설정하면 링커스위치에 /LTCG(밑에 참조 바람)를 설정 |
/showincludes | C/C++ | Advanced | Show Includes (포함 파일 나열) |
컴파일 할 때 포함되는 include 파일들이 어떤 위치의 것인지를 Output 화면으로 모두 보여준다. |
/MAP | Linker | Debugging | Generate Map File (맵파일 생성) |
맵파일을 생성하는 스위치로 유용한 정보를 얻기위해서는 모두 사용해야 한다. |
/MAP:LINES | Linker | Debugging | Map Lines (맵파일에 줄 번호 정보 포함 |
|
/MAP:EXPORTS | Linker | Debugging | Map Exports (맴파일에 익스포트 함수정보 포함) |
|
/NODEFAULTLIB | Linker | Input | Ignore All Default Libraries (라이브러리 무시) |
많은 시스템 헤더파일들이 어떤 파일이 링크되는지 지정하기 위해 #pragma comment (lib#,립이름)을 포함하는데 이를 모두 무시하도록 지시한다. |
/OPT:NOWIN98 | Linker | Optimization | Optimize for Windows98 (Windows98에 맞게 최적화) |
98,ME를 지원하지 않는 다면 설정하는 것이 좋다. 응용프로그램의 크기를 줄일 수 있다. |
/ORDER | Linker | Optimization | Function Order (함수에 순서 지정) |
SWS(Smooth Working Set) 을 실행한 후 함수의 순서를 포함하고 있는 파일을 지정할 수 있다. |
/VERBOSE | Linker | General | Show Process (진행 메시지 표시) |
링크되는 라이브러리의 모든 진행 메세지를 표시 |
/VERBOSE:LIB | Linker | General | Show Process (진행 메시지 표시) |
검색된 라이브러리만 나타내는 진행 메세지를 표시 |
/LTCG | Main | General | Whole Program
Optimization (전체프로그램최적화) |
/GL스위치와 짝을 이룬다. 링크시간코드를 생성. |
/RELEASE | Linker | Advanced | Set Checksum (체크섬 설정) |
별로 사용되지 않지만 WinDBG를 사용할 때 책섬을 조사할 때 필요하기 때문에 미리 넣어 두는 게 좋다. |
/PDBSTRIPPED | Linker | Debugging | Strip Private Symbols (전용 기호 제거된 심볼) |
스택을 탐색하고 해독하기 위해서 필요한 특별한 Frame Pointer Omission(FPO) 데이터를 PDB파일에 포함시키기 위해 설정한다. 각종 변수나 소스 줄정보는 빼고 필요한 FPO데이터와 공용함수들만 남겨놓는다(stripped PDB파일). 이것과 함께 일반 PDB 파일을 같이 생성할 수 있다. 나중에 Dr.Watson 등에서 PDB파일을 로드할 수 있기 위해서는 파일명을 어플리케이션 명과 같게 해줄 필요가 있다. |
[출처] 디버깅에 도움을 주는 컴파일러와 링커옵션 정리|작성자 히댕이
반응형
'Tip & Tech > VS 프로젝트 설정' 카테고리의 다른 글
lib 충돌 관련해서.. 어떤것이 충돌되었는지 확인하는 옵션 (0) | 2011.02.08 |
---|---|
link error 해결 방안 모색 (0) | 2011.02.08 |
(에러) C++ 프로젝트에서 Intellisense문제 해결 항목을 참조하십시오. (0) | 2011.01.06 |
Visual Studio 도구상자 아이콘 깨짐현상 해결법(VS IDE 리셋) (2) | 2010.11.25 |
릴리즈 모드로 build 된 프로그램의 디버깅 (0) | 2010.10.14 |