레이블이 Compiler인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Compiler인 게시물을 표시합니다. 모든 게시물 표시

2018년 9월 27일 목요일

Difference with f10 and f11 in Visual Studio Debug

F10 ("step over") does not descend any further into the call stack. It moves to the next line of the current function.
F11 ("step into") drills down into the function being called.
void function1()
{
    function2();
    function3();
}
If you hit a breakpoint on function2(), F10 will advance to the line function3(). F11 will advance to the first line inside function2.


2017년 8월 15일 화요일

Visual studio track current file in solution explorer


down voteaccepted
Yes, you can find that under Tools -> Options -> Projects and Solutions -> "Track Active Item in Solution Explorer".
It's off by default (as you've noticed), but once it's on, Solution Explorer will expand folders and highlight the current document as you switch between files.

2017년 8월 9일 수요일

Visual studio hotkeys

- 검색 및 치환 : Ctrl+F, Ctrl+H
    파일 검색및치환 : Ctrl+Shift+F, Ctrl+Shift+H
    파일 검색 결과는 결과창을 1,2로 구분해서 받을 수 있고, F8,Shift+F8로 결과 내부에서 이동할 수 있다.
- 정규식,와일드카드 작성 법 : 선택후 __EXPRESSION__ Builder로 참조
- 파일로 이동 : Ctrl+Shift+G
    include문등에서
- 검색반복, 위로 반복 : F3, Shift+F3
- 검색/치환 실시후 창닫기 : 도구>옵션>환경>찾기바꾸기에서 첫검색후 창숨기기하면 된다.
- 증분검색하기 : Ctrl+I, Ctrl_Shift+I
    검색글자를 늘이거나 줄여가면 검색 가능.
    백스페이스로 줄이기
- 범위선택한 내용을 창없이 검색 : Ctrl+F3, Ctrl+Shift+F3으로 앞뒤로 이동
- 코드 자동 정렬 : Ctrl+KF
 
- 상단찾기창 활용 : Ctrl+/
    >명령으로 직접 기능 실행도 가능
    라인번호로 이동도 가능 <= Ctrl+G
    함수명을 검색한후 F9로 함수에 breakpoint설정 가능
- 검색 결과 다르기 보이기 : HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Find
    Find Result Format에 적절한 파라미터 지정
 
--------------------------------------------------------------------------------  
- 도구의 동작 속도 높이기
    도구>옵션>환경>일반에서 애니메이션 효과를 주지 않거나 최소화
 
- 도구의 색 스키마를 변경하기
    http://studiostyles.info 참조
    도구>설정가져오기, 내보내기에서 폰트와 컬러 설정을 import/export하는 방식 사용
    설정 초기화는 도구>옵션>폰트/색깔에서 기본값사용 선택
 
- 특별하게 시작하기
    로깅 : devenv.exe /log [파일명 옵션]
    안전모드 : devenv.exe /safemode
    설정초기화 또는 특정 설정 적용 : devenv.exe /ResetSetting [설정파일 옵션]
- 여러 프로젝트를 동시에 열기 : 솔루션 속성에서 여러 프로젝트를 시작하도록 설정
- 임시 프로젝트 만들기 : 도구>옵션>프로젝트및솔루션>만들어질때 새 프로젝트 저장 옵션을 푼다.
- 코드조각 관리/삽입: Ctrl+KB, Ctrl+KX
- 열려진 창들간의 이동 : Alt+F6, Alt+Shift+F6
- 문서창내 탭간 이동 : Ctrl+Shift+F6
- 문서창내 탭 닫기 : Ctrl+F4
- 문서창내 탭들을 드롭다운리스트로 열기 : Ctrl+Alt+Down
- 창 및 문서간 통합 이동 : Ctrl+Tab
- 현재문서를 다른 탭에 동리하게 열기 : 창>새창
    동일 파일에 대해서 여러개를 열수 있다.
- 도구상자 다루기 : Ctrl+Alt+X, 모두열기 : *, 모두닫기 : /
- 윈도우 레이아웃 : Design view, Debugging View, Full Screen(Shift+Alt+Enter), File View
- 명령창 : Ctrl+Alt+A, 스튜디오 내에서 특정 기능들을 직접 수행.
    alias를 입력하면 단축이름과 기능들 조회가능
 
- 단축키 : 도구>옵션>환경>키보드
     http://go.microsoft.com/FWLink/?Linkid=220115 단축키 포스터
   
- 명령창 도구 연결 : 도구>외부도구에서 %comspec%을 프로그램명으로 사용
--------------------------------------------------------------------------------  
- 코드 정의로 이동 : F12, 우측마우스>정의로이동
- 심볼정의 찾기 : Alt+F12
- 코드 선언으로 이동 : Ctrl+F12
- 참조하는곳 찾기 : Shift+F12
- 돌아오기 : Ctrl+Shift+8
    Ctrl+Shift+7 또 다른 항목을 찾아서 이동
- 코드 정의창 보이기 : Ctrl+\D F12를 누른 효과와 동일    
- 라인자르기 : Ctrl+L, Shift+Del, Ctrl+X
- 라인지우기 : Ctrl+Shift+L
- 주석달기,해제 : Ctrl+KC, Ctrl+KU
- 라인,단어,글자뒤바꾸기 : Alt+Shift+T, Ctrl+Shift+T, Ctrl+T
- 브레이스간 이동 및 선택 :Ctrl+], Ctrl+Shift+]
- 자동완성 : Ctrl+J, Ctrl+Space, Alt+Right
- 파라미터 정보 보기 : Ctrl+Shift+Space
- 간단한 도움말 보기 : Ctrl+KI
- 수직형 범위 선택 : Alt+Shift+방향키, Alt+좌마우스
- 공백문자 보기.숨기기 : Ctrl+RW
- 현재 아웃라인 기준으로 숨기기 : Ctrl+MM //코드 접기
- 선택한 부분을 숨기기 : Ctrl+MH
- 전체를 숨기기/보이기 : Ctrl+MO, Ctrl+ML
- 속성 창, 속성 페이지 : F4, Shift+F4
- 코드조각 관리, 삽입 : Ctrl+KB, Ctrl+KX
- 작업리스트 : Ctrl+WT
    도구>옵션>환경>작업리스트>토큰에서 가능한 토큰 정의
    주석에 입력한 내용을 분석해서 관리할 수 있다.
    바로가기 설정(Ctrl+KH)해도 이곳에서 확인할 수 있다.
--------------------------------------------------------------------------------  
- Break point창 열기 : Ctrl+Alt+B
- 중단점 생성/삭제, 모두 삭제 : F9, Ctrl+Shift+F9
- 모든 Break를 잠시 Enable/Disable 시키기 : Alt+DN
- 실행,디버깅 : Ctrl+F5,F5
- 커서까지 실행 : Ctrl+F10
- Step over : F10
- Step in : F11
- 실행자료 덤프 : 디버깅중 Debug>다른이름으로 덤프 저장으로 저장할 수 있고
    이후 불러들여 정보를 확인할 수 있다.
- Quick Watch : Shift+F9
- 클래스뷰 : Ctrl+KV

2017년 5월 20일 토요일

VS 2015 heap corruption 에러

(1) new로 할당한 경우

char * a = new char[10]; 이라고 선언하고
a[10]이나 a[11]과 같이 원래 할당한 공간의 영역인 10보다 더 큰 영역에 접근하려고 하면 이와 같은 에러가 난다.


(2) malloc으로 할당한 경우

Test * test = (Test*)malloc(sizeof(Test*)); 
free(test);

이와 같이 메모리를 할당하고 해제했을 때 오류가 나는 경우이다.

실제로 위의 코드를 실행해보면 오류가 나지는 않지만
만약 malloc/free 부분에서 Heap 에러가 난다면 한번쯤 훑어봐야 하는 부분이다.

이 부분의 에러는 sizeof(Test)가 sizeof(Test*)보다 크기 때문에 일어나는 오류이다.

즉, 실제로 할당된 메모리의 크기는 sizeof(Test*)이지만
해제하려고 하는 메모리의 크기는 sizeof(Test)이기 때문에 Heap 에러가 나는 것이다.

그러므로 sizeof(Test*)를 sizeof(Test)로 바꾸면 해결 될 것이다.

2017년 5월 19일 금요일

비주얼 스튜디오 2013에서 "This function or variable may be unsafe" 에러

티스토리 뷰
드림스파크 (https://www.dreamspark.com) 에서 학생들에게는 비주얼 스튜디오 최신버전을 무료로 제공한다는걸 얼마 전에 알게 되어서 새로운 버전에 대한 기대감에 비주얼 스튜디오 2013 을 다운받아 사용하고 있었습니다.
근데 비주얼 스튜디오 2013에서는 컴파일러가 강화되었는지, 예전 2010버전에서는 Warning 정도로 처리했던 unsafe 함수들에 대해 에러로 처리하여 컴파일이 되지 않습니다.
예를 들면 scanf, strcpy 같은 함수들을 사용하면 아래와 같은 오류창을 띄우며 컴파일에 실패합니다.
"error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."
scanf 는 안전하지 않으니, scanf_s를 사용하거나 _CRT_SECURE_NO_WARNINGS을 사용하라는 내용인데, 저 혼자 테스트 하는 프로젝트라서 _CRT_SECURE_NO_WARNINGS을 추가했습니다.
추가하는 방법은 [프로젝트] 메뉴에 제일 밑에 있는 메뉴를 보면 [(프로젝트명) 속성] 이라는 메뉴가 있습니다.
속성을 클릭한 다음에 아래와 같이 C/C++ 전처리기 탭에 들어갑니다.
뜨는 항목중, 전처리기 정의에 오른쪽에 보이는 화살표를 클릭하면 나타나는 <편집...> 을 눌러줍니다.
정의 내용안에
_CRT_SECURE_NO_WARNINGS
를 입력하고 확인 눌러줍니다.
전처리기 정의가 끝난 이후에는 scanf나 strcpy를 자유롭게 쓰셔도 에러처리 안하고 컴파일이 잘 됩니다.
위와 같은 방법도 있고, 소스코드의 제일 위에
#define _CRT_SECURE_NO_WARNINGS  
을 선언해 주어도 됩니다. 제일 윗 줄에 선언하셔야합니다. (적어도 해당 함수를 담고 있는 헤더 윗줄에)
하지만 소스코드 자체에 이런 "임시 에러 우회방법"을 사용하는것이 마음에 안들어 저는 프로젝트에 추가시키는 편입니다. 사실은 버퍼오버플로우 등의 프로그램 취약성때문에 사용하면 안 되는 함수이기 때문이죠. 하지말라는건 하지 않는게 좋은겁니다 :)
크리에이티브 커먼즈 라이선스

이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요.