2011-03-26 3 views
3

교과서에서 발견 한 기존 C 프로그램에서 Visual Studio Debugger를 어떻게 사용할 수 있습니까? 이 작은 예제를 하나씩 디버그하고 싶지만 각 예제에 대한 전체 프로젝트를 작성하는 오버 헤드가 없습니다.Visual Studio 2010 Professional로 기존 C 프로그램을 디버깅하려면 어떻게합니까?

예 : Visual Studio 명령 프롬프트 ("cl.exe helloworld.c")에서 "helloworld.c"를 컴파일한다고합시다. 이것은 나에게 helloworld.obj와 helloworld.exe를 준다. "helloworld.exe"에서 VS 디버거를 사용할 방법이 있는지 알고 싶습니다. 지금까지는 본격적인 프로젝트에서 디버거 만 사용했습니다. Visual Studio 프로젝트 오버 헤드없이 작은 "독립형"테스트 프로그램을 디버깅하는 방법을 모르겠습니다. (VS 디버거는 전체 프로젝트에만 사용할 수 있으므로 바보 같은 질문이 아니길 바랍니다.)

감사합니다.

+0

코드 전체에 현저하게 적용되는 몇 가지'printf'의 문제점은 무엇입니까? – pmg

+1

하나의 VS 프로젝트를 만든 다음 다른 작은 프로그램을 디버깅 할 때마다 소스 코드를 덮어 쓸 수는 없습니까? – Jollymorphic

+4

@pmj : 그 점에는 많은 잘못이 있습니다! – Clifford

답변

3

샘플 코드를 테스트하기 위해 하나의 프로젝트를 만들면 어떨까요? 모든 샘플에 대해 단일 .c 파일을 만들 수 있습니다. 이것은 내가 VS 내가 오래 전에 만든 plain.c 프로젝트를 재사용하는 것입니다 사용해야 할 때 내가 무엇

void sampleA() 
{ 
//hello world 
} 

void sampleB() 
{ 
//hello everybody else 
} 

void main(int argc, char** argv) 
{ 
// sampleA(); 
    sampleB(); 
} 
+1

다음과 같은 문제가 생겼을 때 나는 무엇을 했는가? - 비어있는 Visual C++ 프로젝트 만들기 - * .h 및 * .c 파일을 프로젝트 디렉토리에 복사 - 소스 파일 ("foo.c ") 솔루션 탐색기> 소스 파일> 추가> 기존 항목 - 속성> 구성 속성> 디버깅> 명령 인수로 프로젝트에 명령 줄 매개 변수 추가 - 중단 점 설정, F5 키 및 디버그 해제 - 원본 파일"foo.c "다음 예제 인"bar.c "-"bar.c "에도 main() 함수가 있기 때문에 충돌을 피하기 위해 소스 파일에서"foo.c "를 제거해야합니다. - 린스하고 반복하십시오. – Rainer

1

과 같을 것입니다.

새 코드를 붙여넣고 이동하십시오. 코드를 유지하려면 다른 파일에 코드를 던져 넣으십시오.

1

불가능한 일은 아니지만 에 대해 자세히 알아야만합니다. 정확히 최상의 디버깅 환경을 얻으려면 명령 줄에서 프로그램을 빌드해야합니다. 실시간 저장 기능을 가진 수많은 옵션이 있으며 버그를 발견 할 확률이 크게 높아집니다.

요즘은 조금 밖에 없지만 지루한 도구를 배우는 대신에 C를 배워 방법으로 옵션이 너무 많습니다. 새 프로젝트를 만드는 데는 약간의 연습이 필요한데 5 초가 걸립니다. Win32 콘솔 응용 프로그램 프로젝트 템플릿을 사용하십시오.

하나의 작은 설정은 C++ 대신 C로 컴파일하려는 경우 변경해야합니다. 프로젝트, 속성, C/C++, 고급, 컴파일 As = C 코드로 컴파일을 마우스 오른쪽 단추로 클릭하십시오.

+0

일반적으로 "C 코드로 컴파일"을 수동으로 설정할 필요가 없습니다. * .c 파일이 있으면 C 코드로 컴파일되고 * .cpp 파일은 C++로 컴파일됩니다. –

+0

템플릿으로 미리 컴파일 된 헤더 지원을 사용하려면 둘 이상의 변경이 필요하며 옵션 변경이 가장 쉽습니다. –

0

프로젝트를 사용하지 않도록 설정 한 경우이 작업을 수행 할 수 있습니다. 코드 파일 수가 늘어 나면 더 어려워집니다.

우선, 의미있는 소스 레벨 디버깅을 수행하려면 디버그 기호를 생성해야합니다. 당신의 cl.exe 명령 줄에 "/ 닫아"스위치를 추가

cl.exe /Zi helloworld.c 

이 생성됩니다 helloworld.exe, helloworld.objhelloworld.pdb (이러한 디버깅 기호입니다).

다음으로 Visual Studio 2010을 엽니 다. 파일 -> 열기 -> 파일 ...을 사용하고 helloworld.exe을 선택하십시오. EXE 파일에 대해 하나의 프로젝트로 랩핑 솔루션을 생성합니다.

솔루션 탐색기에서 EXE 파일을 마우스 오른쪽 단추로 클릭하고 디버그 -> 새 인스턴스로 이동을 선택하십시오.

소스 창을 팝업하여 프로그램의 첫 번째 줄을 표시해야합니다. 이제 디버그하세요!

+0

고마워, 나는 그것을 시도했다. pdb 파일을 포함하여 파일이 생성됩니다. 그러나 File -> Open -> File ...을 선택하고 helloworld.exe를 선택하면 Visual Studio에서 "실행 파일에서 리소스를 열거 할 수 없습니다."라고 말합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – Rainer

+0

실행중인 exe로 처리하려면 Debug-> Attach를 선택해야합니다. –

+0

@Daniel Rose, 그렇게해도 작동 할 수는 있지만, 프로세스에 연결할 필요는 없습니다. @Rainer, Visual Studio 명령 프롬프트를 사용하여 cl.exe를 호출하고 있습니까? 어딘가에 약간의 불일치가있을 수 있습니다. – bobbymcr

1

디버거는 Visual Studio의 일부이므로 어쨌든 시작해야합니다.그러나 디버거가 소스 코드와 함께 제대로 작동하려면 PDB 파일도 생성해야합니다 (here 참조). cl.exe에 /Zi 또는 /ZI을 인수로 사용하여이 값을 얻을 수 있습니다 (here 참조).

+0

감사합니다. 방금 시도했습니다. "실행 파일에서 리소스를 열거 할 수 없습니다." 아래의 다음 답변을 참조하십시오. – Rainer

0

"오버 헤드"는이 질문을 게시하는 데 더 많은 노력을 기울이지 않습니다!

"빈 프로젝트"템플릿으로 시작하고 프로젝트 브라우저 소스 폴더를 마우스 오른쪽 버튼으로 클릭하여 디버그하려는 단일 소스 파일을 추가하기 만하면됩니다. 몇 초 밖에 걸리지 않습니다.