2011-09-01 4 views
0

내가 내 C와 함께이 오류를 얻고 ++ 코드를 실패 : http://imageshack.us/photo/my-images/193/vcerror.png/디버그 어설

유일한 문제는 그것이 문제가 ... 내가 문자열 첨자가 범위를 벗어나 이해 곳으로 나를 가리 키지 않는하지만 나는 그것이 어디에있을 수 있는지 전혀 모른다.

어쨌든 내가 어디 있는지 찾을 수 있는지 궁금합니다. 나는 거친 생각을 가지고있어서 거기에 중단 점을 넣었지 만 VC++이 어떻게 중단 점을 처리하는지는 끔찍합니다. 단계별로 진행하지만 C++ 파일 자체의 코드 만 보여주고 내 코드는 표시하지 않습니다.

그럼 단계를 넘기고 오류가 바로 나타납니다.

이 문제를 어떻게 추적 할 수 있습니까?

+0

VC++에는 알맞은 중단 점 지원이 있습니다. 디버깅에 익숙해 져야합니다. ;) – selbie

+0

코드가 표시되지 않으면 잘못 구성된 것이 있습니다. VC 디버깅은 확실히 '끔찍한'것이 아닙니다. 검색 결과 - 디버거에 코드가 표시되지 않는 이유에 대한 질문이있을 수 있습니다. –

+0

@Mitch Wheat 1500 실험! 0 평판! 에디슨은 절대로 의지력을주지 못했습니다! –

답변

1

기본적으로 콜 스택을보고 모든 심볼을 설정해야합니다.

나는 야생 추측을하고 "호출 스택"창을 사용하는 방법을 알지 못할 수도 있습니다.

프로그램의 디버그 세션에서 중단 점을 설정하지 않은 경우 프로그램이 어설 션 대화 상자에 도달 할 때까지 프로그램을 실행하십시오. "재시도"를 눌러 컨트롤이 디버거로 전달되도록합니다. "중단"또는 "계속"을 묻는 또 다른 대화 상자가 나타날 수 있습니다. 휴식을 선택하십시오. 이 시점에서 디버거로 분해해야합니다.

그런 다음 호출 스택을보고 적어도 하나의 감시 창이 있어야합니다.

Debug->Windows->Call Stack. 
Debug->Windows->Watch->Watch 1 

호출 스택 창의 항목을 두 번 클릭하여 실행이 예상되는 정확한 코드 줄로 이동할 수 있습니다. (때로는 편집기 창의 작은 화살표가 이전 호출이 반환 된 후 실행할 다음 코드 줄을 가리키고 있습니다.) 맨 위의 호출 스택 라인 바로 아래에있는 호출 스택 창에서 함수 행을 두 번 클릭합니다. 아마 std :: basic_string :: operator입니다. 어떤 가치가이 기능에 전달되고 있습니까? 변수 이름 위로 마우스를 가져가도 작동하지 않으면 '보기'창에 추가하십시오. 또한 "this"에 대한 시계를 추가하여 문자열의 실제 크기와 용량을 분석 할 수 있습니다.

현재있는 곳의 콜 스택에서 함수 호출을 두 번 클릭하십시오. 이렇게하면 프로그램의 실제 버그가있는 코드 줄로 이동하게됩니다. 문자열 변수에 대한 다른 시계를 추가하고 잘못 된 것이 무엇인지 파악할 수 있어야합니다.

나머지는 귀하에게 달려 있습니다.

저는 이것이 IDE에서 빌드 한 모든 것을 갖춘 독립 실행 형 EXE 프로젝트라고 가정합니다. 그렇지 않은 경우 생성 된 각 2 진 파일의 PDB 파일이 해당 2 진 파일과 동일한 디렉토리에 있는지 확인하십시오. 다시 말하지만, Visual Studio에서이 프로젝트가 단순한 EXE 프로젝트라면 자동입니다. 확실하게 빌드를 먼저 "깨끗이"하고 완전히 다시 빌드하십시오. 때때로 디버깅 결함이 수정됩니다.

+0

당신이 말한 것과 똑같은 일을 한 후에, 나는 실수가 어디서 있었는지 알았고 내가 잘못하고있는 것을 알아낼 수있었습니다. 고마워, 정말 고마워! – Brandon

관련 문제