Aracılığıyla paylaş


Visual Studio'da Tam Zamanında Hata Ayıklayıcı kullanarak hata ayıklama

Tam Zamanında hata ayıklama, Visual Studio dışında çalışan bir uygulama hatalar veya kilitlenmeler olduğunda Visual Studio'yu otomatik olarak başlatabilir. Tam Zamanında hata ayıklama ile Visual Studio dışındaki uygulamaları test edebilir ve bir sorun oluştuğunda hata ayıklamaya başlamak için Visual Studio'yu açabilirsiniz.

Tam Zamanında hata ayıklama, Windows masaüstü uygulamalarında çalışır. Evrensel Windows Uygulamaları veya Görselleştiriciler gibi yerel bir uygulamada barındırılan yönetilen kod için çalışmaz.

İpucu

Yalnızca Tam Zamanında Hata Ayıklayıcı iletişim kutusunun görünmesini durdurmak istiyorsanız ancak Visual Studio yüklü değilse, bkz . Tam Zamanında Hata Ayıklayıcıyı Devre Dışı Bırakma. Visual Studio'yu bir kez yüklediyseniz, Windows kayıt defterinden Tam Zamanında hata ayıklamayı devre dışı bırakmanız gerekebilir.

Visual Studio'da Tam Zamanında hata ayıklamayı etkinleştirme veya devre dışı bırakma

Tam Zamanında hata ayıklamayı Visual Studio Araçları>Seçenekleri (veya Hata Ayıklama>Seçenekleri) iletişim kutusundan yapılandırabilirsiniz.

Not

Tam Zamanında hata ayıklamayı etkinleştirmek veya devre dışı bırakmak için Visual Studio'yu yönetici olarak çalıştırıyor olmanız gerekir. Tam Zamanında hata ayıklamayı etkinleştirmek veya devre dışı bırakmak bir kayıt defteri anahtarı ayarlar ve bu anahtarı değiştirmek için yönetici ayrıcalıkları gerekebilir. Visual Studio'yu yönetici olarak açmak için Visual Studio uygulamasına sağ tıklayın ve Yönetici olarak çalıştır'ı seçin.

Tam Zamanında hata ayıklamayı etkinleştirmek veya devre dışı bırakmak için:

  1. Araçlar veya Hata Ayıkla menüsünde Seçenekler>Hata Ayıklama>Tam Zamanında'ı seçin.

    Enable or disable JIT debugging

    Not

    Tam Zamanında menü seçeneği gösterilmiyorsa, Visual Studio Yükleyicisi kullanarak Tam Zamanında hata ayıklayıcının yüklendiğinden emin olun.

  2. Bu tür kodlar için Tam Zamanında hata ayıklamayı etkinleştir kutusunda, Tam Zamanında hata ayıklamanın hata ayıklamasını istediğiniz kod türlerini seçin: Yönetilen, Yerel ve/veya Betik.

  3. Tamam'ı seçin.

Tam Zamanında hata ayıklayıcısını etkinleştirirseniz ancak bir uygulama kilitlendiğinde veya hatalar olduğunda açılmazsa, bkz . Tam Zamanında hata ayıklama sorunlarını giderme.

Windows kayıt defterinden Tam Zamanında hata ayıklamayı devre dışı bırakma

Visual Studio artık bilgisayarınızda yüklü olmasa bile Tam Zamanında hata ayıklama etkinleştirilebilir. Visual Studio artık yüklü değilse, Windows kayıt defterini düzenleyerek Tam Zamanında hata ayıklamayı devre dışı bırakabilirsiniz.

Kayıt defterini düzenleyerek Tam Zamanında hata ayıklamayı devre dışı bırakmak için:

  1. Windows Başlat menüsünde Kayıt Defteri Düzenleyicisi'ni (regedit.exe) çalıştırın.

  2. Kayıt Defteri Düzenleyicisi penceresinde, varsa aşağıdaki kayıt defteri girdilerini bulun ve silin:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\. NETFramework\DbgManagedDebugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    JIT registry key

  3. Varsa aşağıdaki kayıt defteri girdilerini de silin:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework\DbgManagedDebugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    Diğer kayıt defteri anahtarlarını silmediğinizden veya değiştirmediğinizden emin olun.

  4. Kayıt Defteri Düzenleyicisi penceresini kapatın.

Bir Windows Formunda Tam Zamanında Hata Ayıklamayı Etkinleştirme

Varsayılan olarak, Windows Form uygulamalarının kurtarılabilirse uygulamanın çalışmaya devam etmesi için bir üst düzey özel durum işleyicisi vardır. Bir Windows Forms uygulaması işlenmeyen bir özel durum oluşturursa, aşağıdaki iletişim kutusu gösterilir:

Windows Form unhandled exception

Standart Windows Form hata işleme yerine Tam Zamanında hata ayıklamayı etkinleştirmek için şu ayarları ekleyin:

  • system.windows.forms machine.config veya< app name.exe.config> dosyasının jitDebugging bölümünde değerini olarak trueayarlayın:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
  • C++ Windows Form uygulamasında, bir .config dosyasında veya kodunuzda olarak da ayarlayın DebuggableAttributetrue. /Zi ile ve /Og olmadan derleme yaparsanız, derleyici bu özniteliği sizin için ayarlar. Ancak, iyileştirilmemiş bir sürüm derlemesinde hata ayıklamak istiyorsanız, uygulamanızın AssemblyInfo.cpp dosyasına aşağıdaki satırı ekleyerek ayarlamanız DebuggableAttribute gerekir:

    [assembly:System::Diagnostics::DebuggableAttribute(true, true)];
    

    Daha fazla bilgi için bkz. DebuggableAttribute.

Tam Zamanında hata ayıklamayı kullanma

Bu örnek, bir uygulama hata oluştururken Tam Zamanında hata ayıklama işleminde size yol gösterir.

  • Bu adımları izlemek için Visual Studio'yu yüklemiş olmanız gerekir. Visual Studio'nuz yoksa ücretsiz Visual Studio Community Edition'ı indirebilirsiniz.

  • Araçlar>Seçenekler>Hata Ayıklama Tam Zamanında Hata Ayıklama bölümünde Tam Zamanında hata>ayıklamanın etkinleştirildiğinden emin olun.

Bu örnekte, Visual Studio'da NullReferenceException oluşturan bir C# konsol uygulaması oluşturursunuz.

  1. Visual Studio'da ThrowsNullException adlı bir C# konsol uygulaması (Dosya>Yeni>Proje>Visual C#>Konsol Uygulaması) oluşturun. Visual Studio'da proje oluşturma hakkında daha fazla bilgi için bkz . İzlenecek yol: Basit uygulama oluşturma.

  2. Proje Visual Studio'da açıldığında Program.cs dosyasını açın. Main() yöntemini, konsola bir satır yazdıran ve ardından NullReferenceException oluşturan aşağıdaki kodla değiştirin:

    static void Main(string[] args)
    {
        Console.WriteLine("we will now throw a NullReferenceException");
        throw new NullReferenceException("this is the exception thrown by the console app");
    }
    
  3. Çözümü oluşturmak için Hata Ayıkla (varsayılan) veya Sürüm yapılandırması'nı ve ardından Çözümü Yeniden Derle'yi> seçin.

    Not

    • Tam hata ayıklama deneyimi için Hata ayıklama yapılandırması'nı seçin.
    • Sürüm yapılandırması'na seçerseniz, bu yordamın çalışması için Yalnızca Kodum'u kapatmanız gerekir. Araçlar>Seçenekler>Hata Ayıklama'nın altında Yalnızca Kodumu Etkinleştir'in seçimini kaldırın.

    Derleme yapılandırmaları hakkında daha fazla bilgi için bkz . Derleme yapılandırmalarını anlama.

  4. Derlenmiş throwsNullException.exe uygulamasını C# proje klasörünüzde açın (...\ThrowsNullException\ThrowsNullException\bin\Debug veya ...\ThrowsNullException\ThrowsNullException\bin\Release).

    Aşağıdaki komut penceresini görmeniz gerekir:

    Screenshot of the console for ThrowsNullException.exe, which throws an unhandled null reference exception (System.NullReferenceException).

  5. Tam Zamanında Hata Ayıklayıcı seç iletişim kutusu açılır.

    Screenshot of the Choose Just-In-Time Debugger dialog box, which appears after the exception appears in the ThrowsNullException.exe console window.

    Kullanılabilir Hata Ayıklayıcılar'ın altında, henüz seçili değilse tercih ettiğiniz Visual Studio sürümünün/sürümünün>< yeni örneği'ni seçin.

  6. Tamam'ı seçin.

    ThrowsNullException projesi Visual Studio'nun yeni bir örneğinde açılır ve yürütme özel durum oluşturan satırda durdurulur:

    Screenshot of the ThrowsNullException project in Visual Studio, with highlighting of the line of source code that threw the exception.

Bu noktada hata ayıklamaya başlayabilirsiniz. Gerçek bir uygulamada hata ayıklarken kodun neden özel durum oluşturmuş olduğunu bulmanız gerekir.

Dikkat

Uygulamanız güvenilmeyen kod içeriyorsa, hata ayıklamaya devam edip etmeyeceğinize karar vermenizi sağlayan bir güvenlik uyarısı iletişim kutusu görüntülenir. Hata ayıklamaya devam etmeden önce koda güvenip güvenmediğinize karar verin. Kodu kendiniz mi yazdınız? Uygulama uzak bir makinede çalışıyorsa işlemin adını tanıyor musunuz? Uygulama yerel olarak çalışıyorsa, bilgisayarınızda kötü amaçlı kod çalıştırma olasılığını göz önünde bulundurun. Kodun güvenilir olduğuna karar verirseniz Tamam'ı seçin. Aksi takdirde İptal'i seçin.

Tam Zamanında hata ayıklama sorunlarını giderme

Visual Studio'da etkin olsa bile bir uygulama kilitlendiğinde Tam Zamanında hata ayıklama başlatılmıyorsa:

  • Bilinen bir Windows sorunu, Tam Zamanında hata ayıklayıcının başarısız olmasına neden olabilir.

    Düzeltme, aşağıdaki kayıt defteri anahtarlarına Değer verileri 1 olan bir Otomatik DWORD Değerieklemektir:

    • HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug

    • (32 bit makineler için) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

  • Windows Hata Bildirimi bilgisayarınızda hata işlemeyi devralıyor olabilir.

    Bu sorunu düzeltmek için Kayıt Defteri Düzenleyicisi'ni kullanarak aşağıdaki kayıt defteri anahtarlarına 1'in Değer verileriylebirlikte Devre Dışı DWORD Değeri ekleyin:

    • HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Hata Bildirimi

    • (32 bit makineler için) HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Hata Bildirimi

    Daha fazla bilgi için bkz. . WER ayarları.

Tam Zamanında hata ayıklama sırasında aşağıdaki hata iletilerini görebilirsiniz:

  • Kilitlenme işlemine eklenemiyor. Belirtilen program bir Windows veya MS-DOS programı değil.

    Hata ayıklayıcısı başka bir kullanıcı altında çalışan bir işleme eklemeye çalıştı.

    Bu sorunu geçici olarak çözmek için Visual Studio'da İşleme Hata Ayıklama>Ekleme'yi açın (veya Ctrl + Alt + P tuşlarına basın) ve Kullanılabilir İşlemler listesinde hata ayıklamak istediğiniz işlemi bulun. İşlemin adını bilmiyorsanız, Visual Studio Tam Zamanında Hata Ayıklayıcı iletişim kutusunda İşlem Kimliği'ni bulun. Kullanılabilir İşlemler listesinden işlemi seçin ve Ekle'yi seçin. Tam Zamanında hata ayıklayıcı iletişim kutusunu kapatmak için Hayır'ı seçin.

  • Hiçbir kullanıcı oturum açmadığından hata ayıklayıcı başlatılamadı.

    Konsolda oturum açmış kullanıcı olmadığından Tam Zamanında hata ayıklama iletişim kutusunu görüntüleyen bir kullanıcı oturumu yoktur.

    Bu sorunu düzeltmek için makinede oturum açın.

  • Sınıf kayıtlı değil.

    Hata ayıklayıcı, büyük olasılıkla bir yükleme sorunundan dolayı kaydedilmemiş bir COM sınıfı oluşturmaya çalıştı.

    Bu sorunu gidermek için visual studio yüklemenizi yeniden yüklemek veya onarmak için Visual Studio Yükleyicisi kullanın.