Yalnızca Kodum ile yalnızca kullanıcı kodunda hata ayıklama

Just My Code , sisteme, çerçeveye ve diğer kullanıcı dışı kodlara yapılan çağrıların üzerinden otomatik olarak geçen bir Visual Studio hata ayıklama özelliğidir. Çağrı Yığını penceresinde, Just My Code bu çağrıları [Dış Kod] çerçevelerine daraltıyor.

Yalnızca Kodum .NET ve C++ projelerinde farklı çalışır.

Yalnızca Benim Kodum'un etkinleştirilmesi veya devre dışı bırakılması

Çoğu programlama dili için Just My Code varsayılan olarak etkindir.

  • Visual Studio'da Yalnızca Kodum özelliğini etkinleştirmek veya devre dışı bırakmak için, Araçlar>Seçenekleri (veya Hata Ayıklama>Seçenekleri) >Hata Ayıklama>Genel'in altında Yalnızca Kodumu Etkinleştir'i seçin veya seçimini kaldırın.

Seçenekler iletişim kutusundaki Yalnızca Kodumu Etkinleştir seçeneğinin ekran görüntüsü.

Seçenekler iletişim kutusundaki Yalnızca Kodumu Etkinleştir seçeneğinin ekran görüntüsü.

Not

Just My Code'un etkinleştirilmesi, tüm dillerdeki tüm Visual Studio projeleri için geçerli olan genel bir ayardır.

Yalnızca Kendi Kodumda hata ayıklama

Bir hata ayıklama oturumu sırasında Modüller penceresi, hata ayıklayıcının hangi kod modüllerini Kodum (kullanıcı kodu) olarak ele aldığı ve bunların sembol yükleme durumunu gösterir. Daha fazla bilgi için bkz . Hata ayıklayıcının uygulamanıza nasıl ekli olduğu hakkında daha fazla bilgi edinin.

Modüller penceresindeki kullanıcı kodunun ekran görüntüsü.

Modüller penceresindeki kullanıcı kodunun ekran görüntüsü.

Çağrı Yığını veya Görevler penceresinde, Just My Code kullanıcı dışı kodu etiketli [External Code]gri açıklamalı bir kod çerçevesine daraltır.

Çağrı Yığını penceresindeki Dış Kodun ekran görüntüsü.

Çağrı Yığını penceresindeki Dış Kodun ekran görüntüsü.

İpucu

Modülleri, Çağrı Yığınını, Görevleri veya diğer hata ayıklama pencerelerinin çoğunu açmak için bir hata ayıklama oturumunda olmanız gerekir. Hata ayıklarken, Windows Hatalarını Ayıkla>altında, açmak istediğiniz pencereleri seçin.

Daraltılmış [Dış Kod] çerçevesindeki kodu görüntülemek için Çağrı Yığını veya Görev penceresine sağ tıklayın ve bağlam menüsünden Dış Kodu Göster'i seçin. Genişletilmiş dış kod satırları [Dış Kod] çerçevesinin yerini alır.

Çağrı Yığını penceresinde Dış Kodu Göster'in ekran görüntüsü.

Çağrı Yığını penceresinde Dış Kodu Göster'in ekran görüntüsü.

Not

Dış Kodu Göster, kullanıcı tarafından açılan tüm dillerdeki tüm projeler için geçerli olan geçerli bir kullanıcı profil oluşturucu ayarıdır.

Çağrı Yığını penceresinde genişletilmiş bir dış kod satırına çift tıklanması, kaynak kodda çağıran kod satırını yeşil renkle vurgular. DLL'ler veya bulunmayan veya yüklenmeyen diğer modüller için bir simge veya kaynak bulunamadı sayfası açılabilir.

Visual Studio 2022 sürüm 17.7'den başlayarak, Çağrı Yığını penceresinde dış koda çift tıklayarak .NET kodunu otomatik olarak derleyebilirsiniz. Daha fazla bilgi için bkz . Hata ayıklama sırasında .NET derlemelerinden kaynak kodu oluşturma.

.NET Yalnızca Kodum

.NET projelerinde Just My Code, kullanıcı ve kullanıcı dışı kodları sınıflandırmak için sembol (.pdb) dosyalarını ve program iyileştirmelerini kullanır. .NET hata ayıklayıcısı, iyileştirilmiş ikili dosyaları ve yüklenmeyen .pdb dosyalarını kullanıcı dışı kod olarak kabul eder.

Üç derleyici özniteliği, .NET hata ayıklayıcısının kullanıcı kodu olarak kabul etme durumunu da etkiler:

.NET hata ayıklayıcısı diğer tüm kodları kullanıcı kodu olarak kabul eder.

.NET hata ayıklaması sırasında:

  • Kullanıcı olmayan kod adımlarında, kodun bir sonraki kullanıcı kodu satırına kadar adım adım hatasını ayıklayın>.
  • Kullanıcı dışı kodda Hata Ayıklama>Adımı (veya Shift+F11) bir sonraki kullanıcı kodu satırına çalışır.

Başka kullanıcı kodu yoksa, hata ayıklama bitene, başka bir kesme noktasına ulaşana veya hata oluşturana kadar devam eder.

Hata ayıklayıcısı kullanıcı dışı kodda bozulursa (örneğin, Hata Ayıklama>Tümünü Kes'i kullanır ve kullanıcı olmayan kodda duraklatırsanız), Kaynak Yok penceresi görüntülenir. Ardından, kullanıcı kodunun sonraki satırına gitmek için Hata Ayıklama>Adımı komutunu kullanabilirsiniz.

Kullanıcı olmayan kodda işlenmeyen bir özel durum oluşursa, hata ayıklayıcı özel durumun oluşturulduğu kullanıcı kodu satırında sonlandırır.

Özel durum için ilk şans özel durumları etkinleştirilirse, çağıran kullanıcı kodu satırı kaynak kodda yeşil olarak vurgulanır. Çağrı Yığını penceresinde [Dış Kod] etiketli açıklamalı çerçeve görüntülenir.

C++ Yalnızca Kodum

Visual Studio 2017 sürüm 15.8'den başlayarak, kod adımlama için Yalnızca Kodum da desteklenir. Bu özellik ayrıca /JMC (Yalnızca kod hata ayıklamam) derleyici anahtarının kullanılmasını gerektirir. Anahtar, C++ projelerinde varsayılan olarak etkindir. Just My Code'daki Çağrı Yığını penceresi ve çağrı yığını desteği için /JMC anahtarı gerekli değildir.

Kullanıcı kodu olarak sınıflandırılması için, kullanıcı kodunu içeren ikili dosya için PDB'nin hata ayıklayıcı tarafından yüklenmesi gerekir (yükleme durumunu denetlemek için Modüller penceresini kullanın).

Çağrı Yığını penceresinde olduğu gibi çağrı yığını davranışı için C++ dilindeki Just My Code işlevi yalnızca bu işlevleri kullanıcı dışı kod olarak kabul eder:

  • Sembol dosyasında kaynak bilgileri kaldırılmış olan işlevler.
  • Sembol dosyalarının yığın çerçevesine karşılık gelen kaynak dosya olmadığını gösterdiği işlevler.
  • %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers klasöründeki *.natjmc dosyalarında belirtilen işlevler.

Kod adımlama davranışı için C++ dilinde Yalnızca Kodum işlevi yalnızca bu işlevleri kullanıcı dışı kod olarak kabul eder:

  • Hata ayıklayıcıya karşılık gelen PDB dosyasının yüklenmediği işlevler.
  • %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers klasöründeki *.natjmc dosyalarında belirtilen işlevler.

Not

Yalnızca Kodum'da kod adımlama desteği için, Visual Studio 15.8 Preview 3 veya sonraki sürümlerindeki MSVC derleyicileri kullanılarak C++ kodu derlenmelidir ve /JMC derleyici anahtarı etkinleştirilmelidir (varsayılan olarak etkindir). Ek ayrıntılar için bkz . C++ çağrı yığınını ve kod adımlama davranışını özelleştirme ve bu blog gönderisi. Eski bir derleyici kullanılarak derlenen kodlar için ,natstepfilter dosyaları, Yalnızca Kodum'dan bağımsız olan kod adımlama özelliğini özelleştirmenin tek yoludur. Bkz. C++ adımlama davranışını özelleştirme.

C++ hata ayıklaması sırasında kullanıcı dışı kod varsayılan olarak atlanır. C++ hata ayıklaması sırasında:

  • Kullanıcı olmayan koddan Adımla çağrılırsa, kullanıcı dışı kod adımlarında hata ayıklama>(veya F11) kodun üzerinden geçme veya sonraki kullanıcı kodu satırına çalıştırma.
  • Kullanıcı dışı kodda Hata Ayıklama>Adımı (veya Shift+F11), bir sonraki kullanıcı kodu satırına (geçerli yığın çerçevesinin dışında) çalışır.

Başka kullanıcı kodu yoksa, hata ayıklama bitene, başka bir kesme noktasına ulaşana veya hata oluşturana kadar devam eder.

Hata ayıklayıcı kullanıcı dışı kodda bozulursa (örneğin, Hata Ayıkla Tümünü Ayıkla'yı>kullanır ve kullanıcı olmayan kodda duraklatırsanız), adımlama kullanıcı olmayan kodda devam eder.

Hata ayıklayıcı bir özel duruma isabet ederse, kullanıcı kodunda veya kullanıcı dışı kodda olsun, özel durumda durur. Özel Durum Ayarları iletişim kutusundaki kullanıcı tarafından işlenmeyen seçenekler yoksayılır.

C++ çağrı yığınını ve kod adımlama davranışını özelleştirme

C++ projeleri için Çağrı Yığını penceresinin kullanıcı dışı kod olarak ele aldığı modülleri, kaynak dosyaları ve işlevleri *.natjmc dosyalarında belirterek belirtebilirsiniz. Bu özelleştirme, en son derleyiciyi kullanıyorsanız kod adımlama için de geçerlidir (bkz. C++ Yalnızca Kodum).

  • Visual Studio makinesinin tüm kullanıcıları için kullanıcı dışı kod belirtmek için .natjmc dosyasını %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers klasörüne ekleyin.
  • Tek bir kullanıcı için kullanıcı dışı kod belirtmek için .natjmc dosyasını %USERPROFILE%\My Documents\<Visual Studio version>\Visualizers klasörüne ekleyin.

.natjmc dosyası şu söz dizimine sahip bir XML dosyasıdır:

<?xml version="1.0" encoding="utf-8"?>
<NonUserCode xmlns="http://schemas.microsoft.com/vstudio/debugger/jmc/2015">

  <!-- Modules -->
  <Module Name="ModuleSpec" />
  <Module Name="ModuleSpec" Company="CompanyName" />

  <!-- Files -->
  <File Name="FileSpec"/>

  <!-- Functions -->
  <Function Name="FunctionSpec" />
  <Function Name="FunctionSpec" Module ="ModuleSpec" />
  <Function Name="FunctionSpec" Module ="ModuleSpec" ExceptionImplementation="true" />

</NonUserCode>

Modül öğesi öznitelikleri

Öznitelik Açıklama
Name Gerekli. Modülün veya modüllerin tam yolu. Windows joker karakterlerini ? (sıfır veya bir karakter) ve * (sıfır veya daha fazla karakter) kullanabilirsiniz. Örneğin,

<Module Name="?:\3rdParty\UtilLibs\*" />

hata ayıklayıcıya herhangi bir sürücüdeki \3rdParty\UtilLibs içindeki tüm modülleri dış kod olarak ele almalarını söyler.
Company isteğe bağlı. Yürütülebilir dosyaya eklenmiş modülü yayımlayan şirketin adı. Modülleri dağıtmak için bu özniteliği kullanabilirsiniz.

Dosya öğesi öznitelikleri

Öznitelik Açıklama
Name Gerekli. Dış kod olarak ele almak için kaynak dosyanın veya dosyaların tam yolu. Windows joker karakterlerini ? ve * yolu belirtirken kullanabilirsiniz.

İşlev öğesi öznitelikleri

Öznitelik Açıklama
Name Gerekli. Dış kod olarak ele almak için işlevin tam adı. ou, Windows joker karakterlerini ? ve * yolu belirtirken kullanabilir.
Module isteğe bağlı. İşlevi içeren modülün adı veya tam yolu. Bu özniteliği aynı ada sahip işlevlerin belirsiz olmasını sağlamak için kullanabilirsiniz.
ExceptionImplementation olarak ayarlandığında true, çağrı yığını bu işlev yerine özel durum oluşturan işlevi görüntüler.

Yalnızca Kodum ayarlarından bağımsız olarak C++ adımlama davranışını özelleştirme

C++ projelerinde, *.natstepfilter dosyalarında Bunları NoStepInto işlevleri olarak listeleyerek devredecek işlevleri belirtebilirsiniz. *.natstepfilter dosyalarında listelenen işlevler Yalnızca Kodum ayarlarına bağımlı değildir. NoStepInto işlevi, bazı StepInto işlevlerini veya diğer kullanıcı kodunu çağırsa bile hata ayıklayıcıya işlevin üzerine adım atıp atmadığını söyler. .natjmc'de listelenen işlevlerden farklı olarak, hata ayıklayıcı NoStepInto işlevinin içindeki kullanıcı kodunun ilk satırına adım atacaktır.

  • Tüm yerel Visual Studio kullanıcıları için kullanıcı dışı kod belirtmek için .natstepfilter dosyasını %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers klasörüne ekleyin.
  • Tek bir kullanıcının kullanıcı dışı kodunu belirtmek için .natstepfilter dosyasını %USERPROFILE%\My Documents\<Visual Studio version>\Visualizers klasörüne ekleyin.

Not

Bazı üçüncü taraf uzantıları .natstepfilter işlevini devre dışı bırakabilir.

.natstepfilter dosyası şu söz dizimine sahip bir XML dosyasıdır:

<?xml version="1.0" encoding="utf-8"?>
<StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010">
    <Function>
        <Name>FunctionSpec</Name>
        <Action>StepAction</Action>
    </Function>
    <Function>
        <Name>FunctionSpec</Name>
        <Module>ModuleSpec</Module>
        <Action>StepAction</Action>
    </Function>
</StepFilter>

Öğe Açıklama
Function Gerekli. Bir veya daha fazla işlevi kullanıcı dışı işlevler olarak belirtir.
Name Gerekli. Eşleşecek tam işlev adını belirten ECMA-262 biçimli normal ifade. Örneğin:

<Name>MyNS::MyClass::.*</Name>

hata ayıklayıcıya içindeki MyNS::MyClass tüm yöntemlerin kullanıcı dışı kod olarak kabul edileceğini bildirir. Eşleşme büyük/küçük harfe duyarlıdır.
Module isteğe bağlı. İşlevi içeren modülün tam yolunu belirten ECMA-262 biçimli normal ifade. Eşleşme büyük/küçük harfe duyarlı değildir.
Action Gerekli. Bu büyük/küçük harfe duyarlı değerlerden biri:

NoStepInto - hata ayıklayıcıya işlevin üzerine adım atacak şekilde bildirir.
StepInto - hata ayıklayıcıya işleve adım atıp eşleşen işlev için diğer NoStepInto tüm işlevleri geçersiz kılmasını söyler.

.natstepfilter ve .natjmc dosyaları hakkında ek bilgi

  • Visual Studio 2022 sürüm 17.6'dan başlayarak, .natjmc ve .natstepfilter dosyalarını doğrudan çözüme veya projeye ekleyebilirsiniz.

  • .natstepfilter ve .natjmc dosyalarındaki söz dizimi hataları hata ayıklayıcının Çıkış penceresinde bildirilir.

  • .natvis dosyalarının aksine, .natstepfilter ve .natjmc dosyaları çalışırken yeniden yüklenmez. Bunun yerine, bu dosyalar hata ayıklama oturumunun başlangıcına yakın bir yerde yeniden yüklenir.

  • Şablon işlevleri için veya &lt;.* adının kullanılması &lt;.*&gt; yararlı olabilir.

JavaScript Yalnızca Kodum

Visual Studio 2022'deki .esproj projeleri için Visual Studio Code, hata ayıklayıcıyı yapılandırmak ve özelleştirmek için bir launch.json dosyası kullanır. launch.json bir hata ayıklayıcısı yapılandırma dosyasıdır.

Visual Studio, hata ayıklayıcıyı yalnızca kullanıcı koduna ekler. .esproj projeleri için, launch.json'daki ayarı kullanarak skipFiles Visual Studio'da kullanıcı kodunu (Yani, Yalnızca Kodum ayarları) yapılandırabilirsiniz. Bu ayar, VS Code'daki launch.json ayarlarıyla aynı şekilde çalışır. skipFiles hakkında daha fazla bilgi için bkz. İlgiSiz Kod Atlama.