기본적으로 콜 스택을보고 모든 심볼을 설정해야합니다.
나는 야생 추측을하고 "호출 스택"창을 사용하는 방법을 알지 못할 수도 있습니다.
프로그램의 디버그 세션에서 중단 점을 설정하지 않은 경우 프로그램이 어설 션 대화 상자에 도달 할 때까지 프로그램을 실행하십시오. "재시도"를 눌러 컨트롤이 디버거로 전달되도록합니다. "중단"또는 "계속"을 묻는 또 다른 대화 상자가 나타날 수 있습니다. 휴식을 선택하십시오. 이 시점에서 디버거로 분해해야합니다.
그런 다음 호출 스택을보고 적어도 하나의 감시 창이 있어야합니다.
Debug->Windows->Call Stack.
Debug->Windows->Watch->Watch 1
호출 스택 창의 항목을 두 번 클릭하여 실행이 예상되는 정확한 코드 줄로 이동할 수 있습니다. (때로는 편집기 창의 작은 화살표가 이전 호출이 반환 된 후 실행할 다음 코드 줄을 가리키고 있습니다.) 맨 위의 호출 스택 라인 바로 아래에있는 호출 스택 창에서 함수 행을 두 번 클릭합니다. 아마 std :: basic_string :: operator입니다. 어떤 가치가이 기능에 전달되고 있습니까? 변수 이름 위로 마우스를 가져가도 작동하지 않으면 '보기'창에 추가하십시오. 또한 "this"에 대한 시계를 추가하여 문자열의 실제 크기와 용량을 분석 할 수 있습니다.
현재있는 곳의 콜 스택에서 함수 호출을 두 번 클릭하십시오. 이렇게하면 프로그램의 실제 버그가있는 코드 줄로 이동하게됩니다. 문자열 변수에 대한 다른 시계를 추가하고 잘못 된 것이 무엇인지 파악할 수 있어야합니다.
나머지는 귀하에게 달려 있습니다.
저는 이것이 IDE에서 빌드 한 모든 것을 갖춘 독립 실행 형 EXE 프로젝트라고 가정합니다. 그렇지 않은 경우 생성 된 각 2 진 파일의 PDB 파일이 해당 2 진 파일과 동일한 디렉토리에 있는지 확인하십시오. 다시 말하지만, Visual Studio에서이 프로젝트가 단순한 EXE 프로젝트라면 자동입니다. 확실하게 빌드를 먼저 "깨끗이"하고 완전히 다시 빌드하십시오. 때때로 디버깅 결함이 수정됩니다.
VC++에는 알맞은 중단 점 지원이 있습니다. 디버깅에 익숙해 져야합니다. ;) – selbie
코드가 표시되지 않으면 잘못 구성된 것이 있습니다. VC 디버깅은 확실히 '끔찍한'것이 아닙니다. 검색 결과 - 디버거에 코드가 표시되지 않는 이유에 대한 질문이있을 수 있습니다. –
@Mitch Wheat 1500 실험! 0 평판! 에디슨은 절대로 의지력을주지 못했습니다! –