2014년 6월 4일 수요일



예외에 중단점 설정하기

 : 예외발생시의 사용자 지정을 추가할 수 있다. 디버그 - 예외
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 개의 댓글:

댓글 쓰기