2010-11-21 7 views
6

저는 C# 코드를 사용하고 디버거라는 코드를 라인 단위로 실행할 수있는 프로그램을 만드는 데 관심이 있습니다.내 자신의 C# 디버거를 만들고 싶습니다. 어떻게해야합니까? 어떤 도구를 사용해야합니까?

전체 C# 컴파일러를 작성하지 않고이 프로젝트를 어떻게 진행할 수 있습니까? Microsoft Visual Studio를 사용하고 있지만 가능한 한 소프트웨어가 디버거 구현과 독립적 이도록하고 싶습니다.

+0

비주얼 스튜디오 대안을 쓰고 싶습니까? –

답변

5

당신은 ICorDebug, 관리되는 디버깅 API를 찾고 있습니다.
csc.exe을 사용하여 표준 .NET Framework 설치에 포함되어 있고 CSharpCodeProvider class으로 래핑 된 코드를 컴파일 한 다음 어셈블리를 실행하고 디버거를 연결 한 다음 코드를 단계별로 실행할 수 있습니다.

파서 파서가 소스에있는 곳을 알아내는 데는 여전히 C# 파서가 필요합니다.
PDB 파일에는이 정보 중 일부가 포함됩니다. 나는 얼마나 많이 확신하지 못한다.

우리가 당연시하고있는 VS 디버거의 기능 (특히 조사 식 창 및 변수 툴팁)의 대부분은 고통스러운 재 구현이 필요합니다. (Func-evals)

+5

그냥 스테핑을하기 위해 파서가 필요하지 않습니다. PDB 파일에는 어떤 텍스트 범위가 "시퀀스 포인트"에 해당하는지에 대한 모든 정보가 들어 있습니다. (이는 "시퀀스 포인트"의 C 정의와 다르기 때문에 따옴표입니다.) 조사 식 창, 표현식 평가 기 등을 원한다면 파서가 필요하지만 식을 구문 분석하면됩니다. 당신이 lambdas를 허용하지 않기로 결정했다면, 그것은 꽤 작은 부분 집합 인 것입니다. –

+0

@ 에릭 : 감사합니다; 나는 그것에 대해 궁금해하고있다. VS는 실제로 파서를 사용하여 중단 점을 표시하지 않습니까? – SLaks

+0

분명히, 당신은 데이터 분석을위한 파서가 필요합니다. – SLaks

관련 문제