Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan ini menunjukkan kepada Anda cara men-debug kode sumber C# secara interaktif untuk modul PowerShell yang dikompilasi menggunakan Visual Studio Code (VS Code) dan ekstensi C#.
Beberapa keakraban dengan debugger Visual Studio Code diasumsikan.
Untuk pengenalan umum debugger Visual Studio Code, lihat Debugging di Visual Studio Code.
Untuk contoh debugging file dan modul skrip PowerShell, lihat Menggunakan Visual Studio Code untuk pengeditan jarak jauh dan debugging.
Panduan ini mengasumsikan Anda telah membaca dan mengikuti instruksi dalam panduan Menulis Modul Portabel.
Membuat tugas build
Bangun proyek Anda secara otomatis sebelum meluncurkan sesi debugging. Membangun ulang memastikan bahwa Anda mendapatkan versi terbaru dari kode Anda untuk debug.
Mengonfigurasi tugas build:
Di Palet Perintah, jalankan perintah Konfigurasikan Tugas Build Default.
Dalam dialog Pilih tugas untuk mengonfigurasi, pilih Buat file tasks.json dari templat.
Dalam dialog Pilih Templat Tugas, pilih .NET Core.
File tasks.json
baru dibuat jika belum ada.
Untuk menguji tugas penyusunan Anda:
Di Palet Perintah , jalankan perintah Jalankan Tugas Build.
Di Pilih tugas build untuk menjalankan dialog, pilih build.
Informasi tentang file DLL yang dikunci
Secara default, build yang berhasil tidak menampilkan output di panel terminal. Jika Anda melihat output yang berisi teks file proyek tidak ada, Anda harus mengedit file tasks.json
. Sertakan jalur eksplisit ke proyek C# yang dinyatakan sebagai "${workspaceFolder}/myModule"
. Dalam contoh ini, myModule
adalah nama folder proyek. Entri ini harus mengejar entri build
dalam daftar args
sebagai berikut:
{
"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"
}
Saat debugging, modul DLL Anda diimpor ke dalam sesi PowerShell di terminal Visual Studio Code. DLL menjadi terkunci. Pesan berikut ditampilkan saat Anda menjalankan tugas build tanpa menutup sesi terminal:
Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.
Sesi terminal harus ditutup sebelum Anda membangun kembali.
Menyiapkan debugger
Untuk men-debug cmdlet PowerShell, Anda perlu menyiapkan konfigurasi peluncuran kustom. Konfigurasi ini digunakan untuk:
- Membangun kode sumber Anda
- Mulai PowerShell dengan modul Anda termuat
- Biarkan PowerShell terbuka di panel terminal
Saat Anda memanggil cmdlet Anda di sesi terminal, debugger berhenti pada titik henti apa pun yang diatur dalam kode sumber Anda.
Mengonfigurasi launch.json untuk PowerShell
Instal ekstensi C# untuk Visual Studio Code
Di panel Debug, tambahkan konfigurasi debug
Dalam dialog
Select environment
, pilih.NET Core
File
launch.json
dibuka di editor. Dengan kursor Anda di dalam arrayconfigurations
, Anda akan melihat pemilihconfiguration
. Jika Anda tidak melihat daftar ini, pilih Tambahkan Konfigurasi.Untuk membuat konfigurasi debug default, pilih Luncurkan Aplikasi Konsol .NET Core:
Edit bidang
name
,program
,args
, danconsole
sebagai berikut:{ "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" }
Bidang program
digunakan untuk meluncurkan pwsh
sehingga cmdlet yang di-debug dapat dijalankan. Argumen -NoExit
mencegah sesi PowerShell keluar segera setelah modul diimpor.
Jalur dalam argumen Import-Module
adalah jalur keluaran build default ketika Anda mengikuti panduan Menulis Modul Portabel. Jika Anda telah membuat manifes modul (.psd1
file), Anda harus menggunakan jalur untuk itu sebagai gantinya. Pemisah jalur /
berfungsi di Windows, Linux, dan macOS. Anda harus menggunakan terminal terintegrasi untuk menjalankan perintah PowerShell yang ingin Anda debug.
Nota
Jika debugger tidak berhenti di titik henti apa pun, lihat di Konsol Debug Visual Studio Code untuk baris yang berbunyi:
Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Jika Anda melihat ini, tambahkan "justMyCode": false
ke konfigurasi peluncuran Anda (pada tingkat yang sama dengan "console": "integratedTerminal"
.
Mengonfigurasi launch.json untuk Windows PowerShell
Konfigurasi peluncuran ini berfungsi untuk menguji cmdlet Anda di Windows PowerShell (powershell.exe
).
Buat konfigurasi peluncuran kedua dengan perubahan berikut:
name
seharusnyaPowerShell cmdlets: powershell
type
seharusnyaclr
program
seharusnyapowershell
Ini akan terlihat seperti ini:
{ "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" }
Meluncurkan sesi penelusuran kesalahan
Sekarang semuanya siap untuk memulai debugging.
Tempatkan titik henti dalam kode sumber untuk cmdlet yang ingin Anda debug:
Pastikan bahwa konfigurasi cmdlet PowerShell yang relevan dipilih di menu drop-down konfigurasi di tampilan Debug.
Pilih konfigurasi peluncuran
Tekan F5 atau klik tombol Mulai Penelusuran Kesalahan
Beralih ke panel terminal dan panggil cmdlet Anda:
Eksekusi berhenti di titik henti:
Eksekusi berhenti pada breakpoint
Anda dapat menelusuri kode sumber, memeriksa variabel, dan memeriksa tumpukan panggilan.
Untuk mengakhiri debugging, klik Hentikan di toolbar debug atau tekan Shift+F5. Shell yang ketika digunakan untuk debugging akan keluar dan melepaskan kunci pada file DLL yang dikompilasi.