6

Koddan kopyalayıp izleme penceresine ekleyerek çalışma zamanındaki kodu pencereden izlemek için kodun parçasını ekliyorum. Kod, System.IO, System.Xml vb. NET'in varsayılan ad alanı olan Convert.ToString(), XMLDocument.Load(), File.Write() vb. Gibi bir yöntem içeriyorsa, bir hata verir: " 'Convert' adı geçerli bağlamda mevcut değil, ancak izleme penceresinde kodun eklenmiş parçasına tam ad alanı eklediğimde hata veriyor: System.Convert.ToString (123) doğru değeri verir. Programımın kodunda herhangi bir .NET'in çerçeve yöntemi kullanılmadan önce tam ad alanı yoktur, çünkü eğer herhangi bir yöntemin çağrısından önce ad alanı eklerseniz, "using" anahtar sözcüğünü kullanarak her bir dosyanın üstüne isim alanı eklemenin kullanımı nedir? Bir dosyada bir kodun üzerinde bir isim alanı eklerseniz, o yöntemin çağrısından önce o dosya koduna tam ad alanı eklemem gerekir. İzleme listesinde bir kod kopyaladığım her zaman izleme penceresinde tam ad alanı eklemekten ayrı olarak ne yapabilirim, böylece saat hata vermez. Lütfen aşağıdaki ekran görüntüsüne bakın: enter image description hereVisual Studio'da tam ad alanı olmadan izle ekleme

Güncelleme: Bir yöntemin sonucunu kontrol etmeden önce kontrol etmek için izleme listesine bir yöntem ekliyorum. Yöntem yürütmesinin yürütme sırasında herhangi bir hata veya istisna vermeyeceğinden emin olur ve kodun, aslında programın kod yürütmesinde gerçekte yürütülemediğinden düzenlenebilir. Bu yöntemin çağıran koduna bir break-point koydum ve herhangi bir hata olup olmadığını kontrol etmek için önce izleme penceresinde bu kodu ekleyin, çünkü eğer bunu yapmazsam, sonraki değeri düzeltmek için tüm programı tekrar çalıştırmam gerekir zaman.

+0

İzleme penceresinin bir yöntem için kullanıldığını hiç görmedim, normalde bir değişkenin * değerini * izlemek için kullanıyorum – Sayse

+0

@Sayse Bunu yapmak için yürütülmeden önce bir yöntemin sonucunu nasıl kontrol edersiniz yürütme sırasında herhangi bir hata veya istisna vermez. Bu yöntemin çağıran kodu üzerine bir break-point koydum ve herhangi bir hata olup olmadığını kontrol etmek için önce bu pencereyi izleme penceresine eklerim, eğer bunu yapmazsam, sonra tekrar bir sonraki değeri düzeltmek için tüm programı tekrar çalıştırmam gerekir zaman. –

+0

Özel durumlara neden olmayan kod yazmayı denemeye eğilimliyim ve eğer varsa, msdn normalde yakalamak istediğim şeyi bana söyleyecek kapsamlı belgelere sahip. Hata ayıklama için, dediğim gibi değişkenleri ve kesme noktalarını izliyorum. Yaptığın şeyin yanlış olduğunu söylemiyorum, sadece saatleri bu şekilde kullanmıyorum, bana garip geliyor – Sayse

cevap

1

Hata ayıklayıcı, işlevi değerlendirmeyi denemek için geçerli yönerge işaretçisinin (kaynak penceresinin solundaki küçük sarı ok) olduğu bağlamı kullanır.

Durdurulan kod satırında "System;" kullanılıyorsa Dosyanın en üstünde, Watch penceresine Convert.ToInt32 (123) yazabilmeniz gerekir. Kullanmakta olmayan farklı bir dosyada iseniz, tam olarak isme sahip olmanız gerekir.

Ben main.cs herhangi bir noktaya adım atarsam
// 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() 
     { } 
    } 
} 

Ben System ad niteleyicisiz izle penceresine dönüştürme ifadeleri kopyalayabilir dosya ve bunların değerlendirecektir:

ben aşağıdaki test dava ile bu çalıştı . Foo() yapıcımın içine adım attığımda (veya bir kesme noktasına zorla girersem), Sistem ad alanı niteleyicisini en başa eklemezsem, "Geçerli bağlamda 'Dönüştür' adı yok" hatasını alırım.

Not: İfade değerlendirilebilse bile, hata ayıklayıcının çağrıya çağrı yapılıp yapılmadığını söyleyememesi nedeniyle, yenileme düğmesini (izleme penceresinin sağındaki bir daire içindeki iki ok) sık sık vurmak zorunda kalırsınız. CLR yan etkilere neden olur.

Bu yardımcı olur umarım.