Bagikan melalui


Menampilkan utas dan tugas di jendela Tumpukan Paralel (C#, Visual Basic, C++)

Jendela Parallel Stacks berguna untuk debugging aplikasi multithread. Ini memiliki beberapa tampilan:

  • Tampilan utas menampilkan informasi tumpukan panggilan untuk semua utas di aplikasi. Anda dapat menavigasi antara utas dan tumpukan bingkai pada utas tersebut.
  • tampilan Tugas menunjukkan informasi tumpukan panggilan yang berfokus pada tugas.
    • Untuk aplikasi .NET menggunakan pola asinkron/tunggu, tampilan Tugas adalah yang paling membantu untuk penelusuran kesalahan. Untuk tutorial langkah demi langkah, lihat Men-debug aplikasi asinkron.
    • Untuk aplikasi yang menggunakan Pustaka Paralel Tugas (TPL) tetapi bukan pola async/await, atau untuk aplikasi C++ yang menggunakan Concurrency Runtime, tampilan Threads di jendela Parallel Stacks merupakan alat yang paling berguna untuk debugging.
  • tampilan Tugas menunjukkan informasi tumpukan panggilan yang berfokus pada tugas.
    • Untuk aplikasi .NET menggunakan pola asinkron/tunggu, tampilan Tugas adalah yang paling membantu untuk penelusuran kesalahan.
    • Untuk aplikasi yang menggunakan Pustaka Paralel Tugas (TPL) tetapi bukan pola async/await, atau untuk aplikasi C++ yang menggunakan Concurrency Runtime, tampilan Threads di jendela Parallel Stacks merupakan alat yang paling berguna untuk debugging.

Menggunakan jendela Tumpukan Paralel

Untuk membuka jendela Parallel Stacks, Anda harus berada dalam sesi debug. Pilih Debug>Windows>Parallel Stacks.

Kontrol bilah alat

Jendela Parallel Stacks memiliki kontrol toolbar berikut:

Cuplikan layar Toolbar di jendela Tumpukan Paralel.

Ikon Pengendalian Deskripsi
kotak kombo Utas/Tugas kotak kombo Utas Tugas/ Mengalihkan tampilan antara tumpukan panggilan utas dan tumpukan panggilan tugas. Untuk informasi selengkapnya, lihat tampilan Tugas dan tampilan Utas .
Perlihatkan ikon Hanya Berbendera Perlihatkan Hanya Ditandai Menampilkan tumpukan panggilan hanya untuk utas yang ditandai di jendela debugger lain, seperti jendela Utas GPU dan jendela Parallel Watch.
ikon Tampilan Metode Bolak- Alihkan Tampilan Metode Beralih antara tampilan tumpukan panggilan dan Tampilan Metode . Untuk informasi selengkapnya, lihat Tampilan Metode.
Ikon Gulir Otomatis ke Saat Ini Gulir Otomatis ke Bingkai Tumpukan Saat Ini Menggulung otomatis grafik sehingga kerangka tumpukan saat ini terlihat. Fitur ini berguna ketika Anda mengubah bingkai tumpukan saat ini dari jendela lain, atau ketika Anda mencapai titik henti baru dalam grafik besar.
ikon Ubah Zoom Alihkan Kontrol Zoom Memperlihatkan atau menyembunyikan kontrol zoom di sebelah kiri jendela.

Terlepas dari visibilitas kontrol zoom, Anda juga dapat memperbesar tampilan dengan menekan Ctrl dan memutar roda mouse, atau dengan menekan Ctrl+Geser++ untuk memperbesar dan Ctrl+Shift+- untuk memperkecil tampilan.

Cuplikan layar Toolbar di jendela Parallel Stacks 2022.

Ikon Pengendalian Deskripsi
kotak kombo Utas/Tugas kotak kombo Utas Tugas/ Mengalihkan tampilan antara tumpukan panggilan utas dan tumpukan panggilan tugas. Untuk informasi selengkapnya, lihat tampilan Tugas dan tampilan Utas .
ikon Filter Filter Kontrol Menampilkan tumpukan panggilan hanya untuk himpunan benang tertentu yang Anda minati.
Perlihatkan ikon Hanya Berbendera Perlihatkan Hanya Ditandai Menampilkan tumpukan panggilan hanya untuk utas yang ditandai di jendela debugger lain, seperti jendela Utas GPU dan jendela Parallel Watch.
ikon Tampilan Metode Bolak- Alihkan Tampilan Metode Beralih antara tampilan tumpukan panggilan dan Tampilan Metode . Untuk informasi selengkapnya, lihat Tampilan Metode.
Ikon Gulir Otomatis ke Saat Ini Gulir Otomatis ke Bingkai Tumpukan Saat Ini Menggulung otomatis grafik sehingga kerangka tumpukan saat ini terlihat. Fitur ini berguna ketika Anda mengubah bingkai tumpukan saat ini dari jendela lain, atau ketika Anda mencapai titik henti baru dalam grafik besar.
ikon Ubah Zoom Alihkan Kontrol Zoom Memperlihatkan atau menyembunyikan kontrol zoom di sebelah kiri jendela.

Terlepas dari visibilitas kontrol zoom, Anda juga dapat memperbesar tampilan dengan menekan Ctrl dan memutar roda mouse, atau dengan menekan Ctrl+Geser++ untuk memperbesar dan Ctrl+Shift+- untuk memperkecil tampilan.
ikon pencarian Kontrol Pencarian Dengan fitur ini Anda dapat dengan mudah mencari melalui bingkai tumpukan lalu menggunakan panah untuk menavigasi di antara hasil tersebut.
ikon Simpan Simpan Pengaturan Memungkinkan Anda menyimpan/mengekspor konten dari jendela tumpukan paralel sebagai gambar.
Ikon Kode Eksternal Perlihatkan Kontrol Kode Eksternal Dengan menggunakan fitur ini, Anda dapat menampilkan/menyembunyikan tumpukan dari kode/pustaka eksternal.
ikon Ringkasan Salinan Meringkas tumpukan panggilan Mulai dari Visual Studio 2022 versi 17.13 Pratinjau 4, Anda dapat memilih Meringkas saat Copilot diinstal dan diaktifkan. Tombol ini membuka jendela Obrolan Copilot, yang sudah dimuat sebelumnya dengan konteks utas yang relevan, memungkinkan Anda menjelajahi detail, termasuk status utas, panggilan fungsi, dan perbaikan yang disarankan.

Ikon Rangka Tumpukan

Ikon berikut ini menyediakan informasi tentang bingkai tumpukan aktif dan saat ini di semua tampilan:

Ikon Deskripsi
panah kuning Menunjukkan lokasi saat ini (bingkai tumpukan aktif) dari thread saat ini.
ikon Utas Menunjukkan lokasi saat ini (bingkai tumpukan aktif) dari utas noncurrent.
Panah hijau Menunjukkan kerangka tumpukan saat ini (konteks debugger saat ini). Nama metode ditulis tebal di mana pun muncul.
Ikon Deskripsi
panah kuning Menunjukkan lokasi saat ini (bingkai tumpukan aktif) dari thread saat ini.
ikon Utas Menunjukkan lokasi saat ini (bingkai tumpukan aktif) dari utas noncurrent.
Panah hijau Menunjukkan kerangka tumpukan saat ini (konteks debugger saat ini). Nama metode ditulis tebal di mana pun muncul.
Kesalahan Status (.NET) Menunjukkan bahwa bingkai tumpukan saat ini memiliki peringatan status Kritis seperti Kebuntuan.
Status Dikeluarkan (.NET) Menunjukkan simpul yang di-deadlock.
Informasi Status (.NET) Menunjukkan bahwa bingkai tumpukan saat ini memiliki informasi tambahan seperti Menunggu, Menunggu dikunci, dimiliki oleh, dll.
Status Diblokir (.NET) Menunjukkan bahwa tugas saat ini dalam status diblokir/menunggu, dll.
Status Berjalan Menunjukkan tugas yang sedang berjalan.

Item dalam menu konteks

Item menu pintasan berikut ini tersedia saat Anda mengklik kanan metode di tampilan Utas atau tampilan Tugas. Enam item terakhir sama seperti di jendela Call Stack .

Cuplikan layar menu Pintasan di jendela Tumpukan Paralel.

Item menu Deskripsi
Bendera Menandai item terpilih.
Batalkan Penandaan Menghapus penandaan pada item yang dipilih.
Membekukan Membekukan item terpilih.
Cair Mencairkan item yang dipilih.
Beralih ke Bingkai Sama seperti perintah menu yang sesuai di jendela Call Stack. Namun, di jendela Tumpukan Paralel , satu metode mungkin berada dalam beberapa bingkai. Anda dapat memilih bingkai yang Anda inginkan di submenu untuk item ini. Jika salah satu bingkai tumpukan ada di utas saat ini, bingkai tersebut dipilih secara default di submenu.
Buka Tugas atau Buka Utas Beralih ke Tugas atau tampilan Utas , dan menjaga bingkai tumpukan yang sama tetap disorot.
Buka kode sumber Masuk ke lokasi yang sesuai di jendela kode sumber.
Pergi Ke Pembongkaran Menuju lokasi yang sesuai di jendela Pembongkaran .
Tampilkan Kode Eksternal Memperlihatkan atau menyembunyikan kode eksternal.
Tampilan Heksadesimal Beralih antara tampilan desimal dan heksadesimal.
Tampilkan Utas di Sumber Menandai lokasi thread program di jendela kode sumber.
Informasi Beban Simbol Membuka kotak dialog Informasi Beban Simbol .
Pengaturan Simbol Membuka kotak dialog Pengaturan Simbol.

Cuplikan layar menu Pintasan di jendela Tumpukan Paralel 2022.

Item menu Deskripsi
Salin Salin item terpilih.
Pilih Semua Bingkai di Bawah Memilih semua bingkai pada tumpukan yang dipilih.
Bendera Menandai item terpilih.
Batalkan Penandaan Menghapus penandaan pada item yang dipilih.
Membekukan Membekukan item terpilih.
Cair Mencairkan item yang dipilih.
Beralih ke Bingkai Sama seperti perintah menu yang sesuai di jendela Call Stack. Namun, di jendela Tumpukan Paralel , satu metode mungkin berada dalam beberapa bingkai. Anda dapat memilih bingkai yang Anda inginkan di submenu untuk item ini. Jika salah satu bingkai tumpukan ada di utas saat ini, bingkai tersebut dipilih secara default di submenu.
Buka Tugas atau Buka Utas Beralih ke Tugas atau tampilan Utas , dan menjaga bingkai tumpukan yang sama tetap disorot.
Buka kode sumber Masuk ke lokasi yang sesuai di jendela kode sumber.
Pergi Ke Pembongkaran Menuju lokasi yang sesuai di jendela Pembongkaran .
Tampilkan Kode Eksternal Memperlihatkan atau menyembunyikan kode eksternal.
Tampilan Heksadesimal Beralih antara tampilan desimal dan heksadesimal.
Tampilkan Utas di Sumber Menandai lokasi thread program di jendela kode sumber.
Informasi Beban Simbol Membuka kotak dialog Informasi Beban Simbol .
Pengaturan Simbol Membuka kotak dialog Pengaturan Simbol.

Tampilan Utas

Dalam tampilan Utas, kerangka tumpukan dan jalur panggilan utas saat ini disorot dengan warna biru. Lokasi utas saat ini diperlihatkan oleh panah kuning.

Untuk mengubah kerangka tumpukan saat ini, klik dua kali metode yang berbeda. Ini mungkin juga mengalihkan utas saat ini, tergantung pada apakah metode yang Anda pilih adalah bagian dari utas saat ini atau utas lain.

Saat grafik tampilan Threads terlalu besar untuk dimasukkan ke dalam jendela, kontrol Tampilan Mata Burung muncul di jendela. Anda dapat memindahkan bingkai dalam kontrol untuk menavigasi ke berbagai bagian grafik.

Ilustrasi berikut menunjukkan utas utama dalam transisi kode terkelola ke kode asli. Lima thread dalam metode ini. Empat utas terus dijalankan dalam konteks metode S.C, sementara satu utas pekerja berlanjut dalam transisi dari kode terkelola ke kode asli, yang mengatur nama pada utas pekerja.

Cuplikan layar tampilan Threads di jendela Parallel Stacks 2022.

Tabel berikut ini menjelaskan fitur utama dari tampilan Utas :

Callout Nama elemen Deskripsi
1 Memanggil segmen tumpukan atau simpul Berisi serangkaian metode untuk satu atau lebih benang. Jika bingkai tidak memiliki garis panah yang tersambung ke bingkai tersebut, bingkai tersebut menunjukkan seluruh jalur panggilan untuk benang.
2 Sorotan biru Menunjukkan jalur panggilan utas saat ini.
3 Garis panah Sambungkan simpul untuk membentuk seluruh lintasan panggilan untuk utas-utas.
4 Header simpul Memperlihatkan jumlah proses/utas, nama utas, dan ID utas untuk node.
5 Metode Mewakili satu atau beberapa bingkai tumpukan dalam metode yang sama.
6 Petunjuk pada metode Muncul saat Anda mengarahkan kursor di atas metode. Dalam tampilan Utas, tooltip menampilkan semua utas, dalam tabel yang mirip dengan jendela Utas.
7 Deskripsi utas Deskripsi utas yang dihasilkan AI. Mulai Visual Studio 2022 versi 17.13 Pratinjau 1, deskripsi ini ada saat Copilot diinstal dan diaktifkan.

Dapatkan bantuan AI

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI dalam tampilan Utas dengan deskripsi utas yang dihasilkan AI dan dengan menggunakan tombol Hasilkan Insight . Gunakan tombol Buat Cuplikan Layar Wawasandari Hasilkan Wawasan. untuk berinteraksi dengan Copilot tentang data utas yang Anda lihat. Dalam skenario ini, Copilot sudah mengetahui konteks untuk pertanyaan Anda, jadi Anda tidak perlu memberikan konteks sendiri dalam obrolan. Untuk informasi selengkapnya, lihat Debug dengan Copilot.

Untuk mengaktifkan atau menonaktifkan deskripsi ringkasan utas, buka Alat>Opsi dan perluas bagian Semua Pengaturan>GitHub>Copilot>Debugger dan Diagnostik. Pilih atau hapus centang pada kotak centang Aktifkan ringkasan AI di jendela Tumpukan Paralel.

Untuk mengaktifkan atau menonaktifkan deskripsi ringkasan utas, buka dialog Alat>Opsi, dan perluas bagian GitHub>Copilot. Di kategori Debugger dan Diagnostik , pilih atau kosongkan kotak centang Aktifkan ringkasan AI di jendela Tumpukan Paralel .

Ilustrasi berikut menunjukkan satu utas yang beralih dari kode Main ke transisi kode Terkelola ke Native. Enam thread ada dalam metode yang sedang digunakan. Dua utas berlanjut ke Thread.Sleep, dan dua berlanjut ke Console.WriteLine dan utas saat ini berlanjut ke SyncTextWriter.WriteLine.

Cuplikan layar tampilan Utas di jendela Tumpukan Paralel.

Tabel berikut ini menjelaskan fitur utama dari tampilan Utas :

Callout Nama elemen Deskripsi
1 Memanggil segmen tumpukan atau simpul Berisi serangkaian metode untuk satu atau lebih benang. Jika bingkai tidak memiliki garis panah yang tersambung ke bingkai tersebut, bingkai tersebut menunjukkan seluruh jalur panggilan untuk benang.
2 Sorotan biru Menunjukkan jalur panggilan utas saat ini.
3 Garis panah Sambungkan simpul untuk membentuk seluruh lintasan panggilan untuk utas-utas.
4 Header simpul Menunjukkan jumlah proses dan utas untuk simpul.
5 Metode Mewakili satu atau beberapa bingkai tumpukan dalam metode yang sama.
6 Petunjuk pada metode Muncul saat Anda mengarahkan kursor di atas metode. Dalam tampilan Utas, tooltip menampilkan semua utas, dalam tabel yang mirip dengan jendela Utas.

Tampilan tugas

Untuk aplikasi .NET menggunakan pola asinkron/tunggu, tampilan Tugas adalah yang paling membantu untuk penelusuran kesalahan. Untuk tutorial langkah demi langkah, lihat Men-debug aplikasi asinkron.

Dalam tampilan Tugas , Anda bisa:

  • Lihat visualisasi tumpukan panggilan untuk aplikasi yang menggunakan pola asinkron/tunggu.
  • Identifikasi kode asinkron yang dijadwalkan untuk dijalankan tetapi belum berjalan.

Ilustrasi berikut ini memperlihatkan tampilan Utas di bagian atas dan tampilan Tugas terkait di bagian bawah.

Cuplikan layar tampilan Utas dan Tugas.

Cuplikan layar tampilan Tugas di jendela Tumpukan Paralel.

Arahkan penunjuk mouse ke metode untuk menampilkan tooltip dengan informasi tambahan. Dalam tampilan Tugas, petunjuk memperlihatkan semua tugas dalam tabel yang mirip dengan jendela Tugas.

Gambar berikut menunjukkan tooltip untuk sebuah metode di tampilan Threads di bagian atas dan untuk tampilan Tasks yang sesuai di bagian bawah.

Cuplikan layar tooltip Threads dan Tugas.

Cuplikan layar tooltip Utas dan Tugas.

Tampilan Metode

Dari tampilan Utas atau tampilan Tugas , Anda dapat mempivot grafik pada metode saat ini dengan memilih ikon Alihkan Tampilan Metode pada toolbar. Tampilan Metode menunjukkan sekilas semua metode pada semua utas yang memanggil atau dipanggil oleh metode saat ini. Ilustrasi berikut menunjukkan bagaimana informasi yang sama terlihat di Tampilan Utas di sebelah kiri dan di Tampilan Metode di sebelah kanan.

Cuplikan layar tampilan Metode di jendela Tumpukan Paralel. tampilan Metode

Cuplikan layar tampilan Metode di jendela Parallel Stacks 2022. tampilan Metode

Jika Anda beralih ke bingkai tumpukan baru, Anda menjadikan metode tersebut sebagai metode saat ini, dan Tampilan Metode menampilkan semua penelepon dan panggilan untuk metode baru. Skenario ini dapat menyebabkan beberapa thread muncul atau menghilang dari tampilan, tergantung apakah metode tersebut muncul pada stack panggilan mereka. Untuk kembali ke tampilan tumpukan panggilan, pilih ikon toolbar Tampilan Metode lagi.

Melakukan debug thread dan tugas dengan tutorial berbentuk video tentang stack paralel

Tutorial video ini menunjukkan bagaimana Anda dapat menggunakan tampilan Utas dan Tugas dari jendela Parallel Stacks di Visual Studio 2022 untuk men-debug aplikasi multithread Anda.