Derlenmiş cmdlet'lerde hata ayıklamak için Visual Studio Code kullanma

Bu kılavuz, Visual Studio Code (VS Code) ve C# uzantısını kullanarak derlenmiş bir PowerShell modülü için C# kaynak kodunda etkileşimli olarak hata ayıklamayı gösterir.

Visual Studio Code hata ayıklayıcısı hakkında bazı bilgi sahibi olduğunuz varsayılır.

  • Visual Studio Code'da Hata Ayıklama hakkında genel bir giriş için bkz. Visual Studio Code'da Hata Ayıklama.

  • PowerShell betik dosyalarında ve modüllerinde hata ayıklama örnekleri için bkz. uzaktan düzenleme ve hata ayıklama için Visual Studio Code kullanma.

Bu kılavuzda Taşınabilir Modül Yazma kılavuzundaki yönergeleri okuduğunuz ve izlediğiniz varsayılır.

Derleme görevi oluşturma

Hata ayıklama oturumu başlatmadan önce projenizi otomatik olarak oluşturun. Yeniden derleme, kodunuzun en son sürümünde hata ayıklamanızı sağlar.

Derleme görevini yapılandırma:

  1. Komut PaletiVarsayılan Derleme Görevini Yapılandır komutunu çalıştırın.

    Varsayılan Derleme Görevi Yapılandırmayı Çalıştır

  2. yapılandırmak için bir görev seçin iletişim kutusunda şablondan tasks.json dosyası oluştur seçin.

  3. Görev Şablonu Seç iletişim kutusunda .NET Core seçin.

Henüz yoksa yeni bir tasks.json dosyası oluşturulur.

Derleme görevinizi test etmek için:

  1. Komut Paletiiçinde, Derleme Görevini Çalıştır komutunu çalıştırın.

  2. çalıştırılacak derleme görevini seçin iletişim kutusunda derleme seçin.

Kilitlenen DLL dosyaları hakkında bilgi

Varsayılan olarak, başarılı bir derleme terminal bölmesinde çıkışı göstermez. Project dosyasının metin içeren bir çıktı görürseniz, tasks.json dosyasını düzenlemeniz gerekir. C# projesinin "${workspaceFolder}/myModule"olarak ifade edilen açık yolunu ekleyin. Bu örnekte, myModule proje klasörünün adıdır. Bu girdi, build listesindeki args girdisinin ardından aşağıdaki gibi geçmelidir:

    {
        "label": "build",
        "command": "dotnet",
        "type": "shell",
        "args": [
            "build",
            "${workspaceFolder}/myModule",
            // Ask dotnet build to generate full paths for file names.
            "/property:GenerateFullPaths=true",
            // Do not generate summary otherwise it leads to duplicate errors in Problems panel
            "/consoleloggerparameters:NoSummary",
        ],
        "group": "build",
        "presentation": {
            "reveal": "silent"
        },
        "problemMatcher": "$msCompile"
    }

Hata ayıklama sırasında modül DLL'niz VS Code terminalindeki PowerShell oturumuna aktarılır. DLL kilitlenir. Derleme görevini terminal oturumunu kapatmadan çalıştırdığınızda aşağıdaki ileti görüntülenir:

Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.

Yeniden oluşturmadan önce terminal oturumları kapatılmalıdır.

Hata ayıklayıcıyı ayarlama

PowerShell cmdlet'inde hata ayıklamak için özel bir başlatma yapılandırması ayarlamanız gerekir. Bu yapılandırma şunları yapmak için kullanılır:

  • Kaynak kodunuzu oluşturma
  • Modülünüz yüklü olarak PowerShell'i başlatma
  • PowerShell'i terminal bölmesinde açık bırakın

Terminal oturumunda cmdlet'inizi çağırdığınızda, hata ayıklayıcı kaynak kodunuzda ayarlanan kesme noktalarında durur.

PowerShell için launch.json yapılandırma

  1. Visual Studio Code için C# uzantısını yükleme

  2. Hata Ayıklama bölmesinde hata ayıklama yapılandırması ekleyin

  3. Select environment iletişim kutusunda .NET Core'ı seçin

  4. launch.json dosyası düzenleyicide açılır. İmleciniz configurations dizisindeyken configuration seçiciyi görürsünüz. Bu listeyi görmüyorsanız Yapılandırma Ekleseçin.

  5. Varsayılan hata ayıklama yapılandırması oluşturmak için .NET Core Konsol Uygulamasını başlatöğesini seçin:

    .NET Core Konsol Uygulamasını Başlat

  6. name, program, argsve console alanlarını aşağıdaki gibi düzenleyin:

     {
         "name": "PowerShell cmdlets: pwsh",
         "type": "coreclr",
         "request": "launch",
         "preLaunchTask": "build",
         "program": "pwsh",
         "args": [
             "-NoExit",
             "-NoProfile",
             "-Command",
             "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll",
         ],
         "cwd": "${workspaceFolder}",
         "stopAtEntry": false,
         "console": "integratedTerminal"
     }
    

program alanı, hata ayıklanan cmdlet'in çalıştırılabilmesi için pwsh başlatmak için kullanılır. -NoExit bağımsız değişkeni, modül içeri aktarıldığında PowerShell oturumunun çıkış yapmasını engeller. Import-Module bağımsız değişkenindeki yol, Taşınabilir Modül Yazma kılavuzu izlediğinizde varsayılan derleme çıkış yoludur. Bir modül bildirimi (.psd1 dosyası) oluşturduysanız bunun yerine bunun yolunu kullanmanız gerekir. / yol ayırıcısı Windows, Linux ve macOS üzerinde çalışır. Hata ayıklamak istediğiniz PowerShell komutlarını çalıştırmak için tümleşik terminali kullanmanız gerekir.

Not

Hata ayıklayıcı herhangi bir kesme noktasında durmazsa, Visual Studio Code Hata Ayıklama Konsolu'nda şu satırı arayın:

Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.

Bunu görürseniz başlatma yapılandırmanıza "justMyCode": false ekleyin ("console": "integratedTerminal"ile aynı düzeyde).

Windows PowerShell için launch.json yapılandırma

Bu başlatma yapılandırması, cmdlet'lerinizi Windows PowerShell'de (powershell.exe) test etme amacıyla çalışır. Aşağıdaki değişikliklerle ikinci bir başlatma yapılandırması oluşturun:

  1. name PowerShell cmdlets: powershell olmalıdır

  2. type clr olmalıdır

  3. program powershell olmalıdır

    Şu şekilde görünmelidir:

     {
         "name": "PowerShell cmdlets: powershell",
         "type": "clr",
         "request": "launch",
         "preLaunchTask": "build",
         "program": "powershell",
         "args": [
             "-NoExit",
             "-NoProfile",
             "-Command",
             "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll",
         ],
         "cwd": "${workspaceFolder}",
         "stopAtEntry": false,
         "console": "integratedTerminal"
     }
    

Hata ayıklama oturumunu başlatma

Artık her şey hata ayıklamaya başlamak için hazır.

Kaynak kodu adım adım ilerleyebilir, değişkenleri inceleyebilir ve çağrı yığınını inceleyebilirsiniz.

Hata ayıklamayı sonlandırmak için, hata ayıklama araç çubuğunda Durdur'e tıklayın veya Shift+F5tuşlarına basın. Hata ayıklamak için kullanılan kabuk, derlenmiş DLL dosyasında kilit çıkar ve serbest bırakır.