예외에 중단점 설정하기
: 예외발생시의 사용자 지정을 추가할 수 있다. 디버그 - 예외
throw std::exception("Exception Error");
값이 변경될 때 브레이킹 포인트 걸기
: 브레이킹 포인트를 건 곳에 우클릭 - 중단점 조건을 선택하여 특정 조건을 입력한다.
스코프 벗어난 객체 값 체크
: 윈도우 조사식 창(watch window)에서 입력한 객체가 스코프를 벗어날 경우 비 활성화 되어 값을 확인하기 어렵다. 그 때 확인하고 싶은 객체의 포인터를 입력하면 해당객체를 벗어나도 확인 할 수 있다.(객체명*)객체주소
배열 값 확인하기
: 배열안에 특정 위치 값을 보고 싶을 때 사용한다. 포인터 연산 등을 이용하여 특정 값 확인도 가능하다.
값이 변경 되는 위치 찾기
: 특정 변수의 값이 변경되는 위치를 찾을 때 사용한다. 우선 추적할 데이터의 주소를 파악한 후 메뉴창에서 디버그 - 새 중단점 - 데이터 중단점을 선택하여, 데이터 주소 값을 입력해 준다. 단 타입의 크기에 주의한다.
조사식에서 변수
$tid //현재 스레드 ID
$pid //프로세스 ID
$cmd line // 프로그램 명령줄 문자열
$user //프로그램 실행 계정 정보
$registername //레지스터의 내용 표시
$err //마지막 오류의 숫자 코드
$err, hr // 마지막 오류 메시지 표시
코드에서 디버거 시작하기
: 프로그램에 디버거를 첨부할 때 사용한다 __debugbreak()를 넣으면 프로세스에 디버거 연결 기회를 얻는다
출력 창에 표시하기
: 디버거를 연결하여, 출력창에 특정 텍스트를 표시한다.
릴리즈 빌드 디버깅
: 릴리즈와 디버그는 목적이 다르기 때문에 최적화및 디버깅 설정이 다르다. 릴리즈 빌드에서 디버깅을 하려면 몇가지를 수정하자.
1. 프로젝트 속성 - 구성 속성 - C/C++ - 일반 - 디버그 정보형식 - 프로그램 데이터베이스 (/Zi)
2. 프로젝트 속성 - 구성 속성 - C/C++ - 최적화 - 사용 안 함 (/Od)
3. 프로젝트 속성 - 구성 속성 - 링커 - 디버깅 - 디버그 정보 생성 - 예 (/DEBUG)
원격 디버깅(프로세스에 연결)
: 원격 디버깅이 필요한 경우 프로세스에 연결하여 디버깅을 수행할 수 있다. PDB파일이 동일한 경로에 있어야 한다.
디버그 - 프로세스에 연결(ctrl+alt+p)
cf) 마이크로소프트웨어(개발자에게 필요한 디버깅 기초 상식들)
cf) 실행중 값을 확인하고 싶을 때 일일이 디버깅도 좋지만 LOG를 출력하여 값을 확인하는 것도 유용하다.
cf) Even More Visual Studio Debugging Tips for Native Development
0 개의 댓글:
댓글 쓰기