6

코드에서 코드를 복사하여 조사 식 창에 추가하여 코드 조각을 런타임에 코드에서보기 창에 추가합니다. 코드에 System.IO, System.Xml 등 .NET의 기본 네임 스페이스 인 Convert.ToString(), XMLDocument.Load(), File.Write() 등의 메서드가 포함되어 있으면 다음과 같은 오류가 발생합니다. " 'Convert'라는 이름은 현재 컨텍스트에 존재하지 않습니다. 그러나 Watch Window에서 추가 된 코드 부분에 완전한 네임 스페이스를 추가하면 오류가 발생하지 않습니다. System.Convert.ToString (123)은 올바른 값을 제공합니다. .NET의 프레임 워크 메서드가 호출되기 전에 내 프로그램의 코드에 완전한 네임 스페이스가 없기 때문에 메서드 호출 전에 네임 스페이스를 추가하면 "사용"키워드를 사용하여 각 파일의 맨 위에 네임 스페이스를 추가하는 것이기 때문입니다. 파일의 코드 위에 네임 스페이스를 추가하면 메서드 호출 전에 해당 파일의 코드에 전체 네임 스페이스를 추가 할 필요가 없습니다. 감시 목록에 코드를 복사 할 때마다 감시 윈도우에 전체 네임 스페이스를 추가하는 것 외에는 시계에서 오류가 발생하지 않도록하려면 어떻게해야합니까? 아래 스크린 샷을 참조하십시오. enter image description hereVisual Studio에서 완전한 네임 스페이스가없는 시계 추가

업데이트 : 메서드를 실행하기 전에 결과를 확인하려면 감시 목록에 메서드를 추가합니다. 메서드 실행이 실행시 오류나 예외를주지 않게하고 메서드가 실제로 프로그램의 코드 실행에서 실행되지 않았기 때문에 코드를 편집 할 수 있습니다. 해당 메서드의 호출 코드에 중단 점을 넣고 먼저 오류가 있는지 확인하기 위해 조사 식 창에 해당 코드를 추가합니다. 그렇게하지 않으면 전체 프로그램을 다시 실행하여 다음 값을 수정해야하기 때문입니다. 시각.

+0

나는 watch 윈도우가 메소드에 사용되는 것을 본 적이 없다. 나는 보통 변수의 * value *를 보는데 사용한다. – Sayse

+0

@Sayse 메소드가 실행되기 전에 그 결과를 어떻게 체크 할 것인가? 실행시 오류나 예외가 발생하지 않습니다. 해당 메서드의 호출 코드에 중단 점을 넣고 먼저 오류가 있는지 확인하기 위해 조사 식 창에 해당 코드를 추가합니다. 그렇지 않으면 그 다음에 값을 수정하기 위해 전체 프로그램을 다시 실행해야합니다. 시각. –

+0

예외를 발생시키지 않는 코드를 작성하는 경향이 있습니다. 그렇다면 msdn은 일반적으로 내가 무엇을 잡아야하는지 알려주는 광범위한 문서를 가지고 있습니다. 디버깅을 위해, 말했듯이, 변수 및 중단 점을보고. 당신이하고있는 일이 잘못되었다는 말은 아니에요. 그런 식으로 시계를 사용하지 마십시오. 이상하게 보입니다. – Sayse

답변

1

디버거는 현재 명령 포인터가있는 컨텍스트 (소스 창의 왼쪽에있는 작은 노란색 화살표)를 사용하여 함수를 평가하려고합니다.

그래서 중지 된 코드 줄에 "using System;" 파일의 맨 위에서 Convert.ToInt32 (123)를 조사 식 창에 입력 할 수 있어야합니다. 사용하지 않는 파일이 다른 경우 이름을 모두 정규화해야합니다.

내가 main.cs의 어느 지점에 단계 경우
// Main.cs 
using System; 
namespace TestCon 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Foo foo = new Foo(); 

      Console.WriteLine(Convert.ToString(123)); 
      Console.WriteLine(Convert.ToInt32("234")); 
     } 
    } 
} 

//Foo.cs (note that there are no using statements in this file) 
namespace TestCon 
{ 
    class Foo 
    { 
     public Foo() 
     { } 
    } 
} 

내가 System 네임 스페이스 한정자없이 시계 창으로 변환 식을 복사 할 수 있습니다 파일과 그들이 평가합니다 :

나는 다음과 같은 테스트 케이스와 함께이 시도 . 내 Foo() 생성자에서 (또는 중단 점까지) 단계를 밟으면 System namespace 한정자를 처음에 추가하지 않으면 "Convert '가 현재 컨텍스트에 존재하지 않습니다."오류가 발생합니다.

참고 : 표현식을 평가할 수있는 경우에도 디버거가 호출을 호출할지 여부를 알 수 없으므로 새로 고침 단추 (조사 식 창의 오른쪽에있는 원 안에있는 두 개의 화살표)를 자주 누르십시오. CLR은 부작용을 일으킬 것입니다.

희망이 있습니다.