Bagikan melalui


Mendebug aplikasi multirangkaian di Visual Studio

Rangkaian adalah urutan instruksi saat sistem operasi memberikan waktu prosesor. Setiap proses yang berjalan dalam sistem operasi terdiri dari setidaknya satu rangkaian. Proses yang memiliki lebih dari satu rangkaian disebut multirangkaian.

Komputer dengan beberapa prosesor, prosesor multi-inti, atau proses hyperthreading dapat menjalankan beberapa rangkaian simultan. Pemrosesan paralel yang menggunakan banyak rangkaian dapat sangat meningkatkan performa program, tetapi mungkin juga membuat penelusuran kesalahan lebih sulit karena Anda melacak banyak rangkaian.

Pemrosesan paralel yang sempurna tidak selalu dimungkinkan. Utas kadang harus disinkronkan. Satu utas mungkin harus menunggu hasil dari utas lain, atau satu utas mungkin memerlukan akses eksklusif ke sumber daya yang digunakan oleh utas lain. Masalah sinkronisasi adalah penyebab umum bug dalam aplikasi multiutas. Kadang utas mungkin akhirnya menunggu sumber daya yang tidak pernah tersedia. Ini mengakibatkan kondisi yang disebut kebuntuan.

Utas dan proses

Utas dan proses adalah konsep terkait dalam ilmu komputer. Keduanya mewakili urutan petunjuk yang harus dijalankan dalam urutan tertentu. Akan tetapi, petunjuk dalam utas atau proses terpisah dapat dijalankan secara paralel.

Proses ada dalam sistem operasi dan sesuai dengan apa yang dilihat pengguna sebagai program atau aplikasi. Utas, di sisi lain, ada dalam proses. Untuk alasan ini, utas kadang disebut sebagai proses ringan. Tiap proses terdiri dari satu atau beberapa utas.

Adanya beberapa proses memungkinkan komputer untuk melakukan lebih dari satu tugas sekaligus. Keberadaan beberapa utas memungkinkan proses untuk memisahkan pekerjaan yang akan dilakukan secara paralel. Di komputer dengan multiprosesor, proses atau utas dapat berjalan pada prosesor yang berbeda. Ini memungkinkan pemrosesan paralel yang sebenarnya.

Alat untuk mendebug aplikasi multirangkaian

Visual Studio menyediakan berbagai alat untuk digunakan dalam mendebug aplikasi multirangkaian.

Visual Studio juga menyediakan titik henti dan titik pelacakan yang kuat, yang dapat berguna saat Anda mendebug aplikasi multirangkaian. Gunakan kondisi dan filter titik henti untuk menempatkan titik henti pada rangkaian individual. Titik pelacakan memungkinkan Anda melacak eksekusi program Anda tanpa melanggar, untuk mempelajari masalah seperti kebuntuan. Untuk mengetahui informasi selengkapnya, lihat Tindakan titik henti dan titik pelacakan.

Mendebug aplikasi multirangkaian yang memiliki antarmuka pengguna bisa sangat sulit. Anda mungkin mempertimbangkan untuk menjalankan aplikasi di komputer kedua dan menggunakan penelusuran kesalahan jarak jauh. Untuk informasi selengkapnya, lihat Penelusuran kesalahan jarak jauh.

Tabel berikut menampilkan informasi yang tersedia dan tindakan yang dapat Anda lakukan di setiap tempat ini:

Antarmuka Pengguna Informasi yang Tersedia Tindakan yang Dapat Anda Lakukan
Kotak dialog Lampirkan ke Proses Proses yang Tersedia yang dapat Anda lampirkan ke:

- Nama proses (.exe)
- Nomor ID proses
- Judul Bilah Menu
- Jenis (Terkelola v4.0; Terkelola v2.0, v1.1, v1.0; x86; x64; IA64)
- Nama Pengguna (nama akun)
- Jumlah sesi
Pilih proses yang akan dilampirkan

Pilih komputer jarak jauh

Ubah jenis transportasi untuk menyambungkan ke komputer jarak jauh
Jendela Proses Proses Terlampir:

- Nama Proses
- Nomor ID proses
- Jalur untuk memproses .exe
- Judul Bilah Menu
- Status (Jeda. Berjalan)
- Debug (Native, Terkelola, dan sebagainya.)
- Jenis transportasi (default, native tanpa autentikasi)
- Pengkualifikasi Transportasi (komputer jarak jauh)
Peralatan:

- Lampirkan
- Copot
- Hentikan

Menu pintasan

- Lampirkan
- Copot
- Copot saat debug dihentikan
- Hentikan
Jendela Utas Utas dalam proses saat ini:

- ID Utas
- ID Terkelola
- Kategori (utas utama, utas antarmuka, penanganan panggilan prosedur jarak jauh, atau utas pekerja)
- Nama Utas
- Lokasi tempat utas dibuat
- Prioritas
- Masker Afinitas
- Jumlah Ditangguhkan
- Nama Proses
- Indikator Bendera
- Indikator ditangguhkan
Peralatan:

- Cari
- Cari Tumpukan Panggilan
- Beri Bendera Hanya Kode Saya
- Beri Bendera Pemilihan Modul Kustom
- Kelompokkan menurut
- Kolom
- Luaskan/Ciutkan tumpukan panggilan
- Luaskan/Ciutkan grup
- Bekukan/Cairkan Utas

Menu pintasan

- Tampilkan utas dalam sumber
- Beralih ke utas
- Bekukan utas yang sedang berjalan
- Cairkan utas beku
- Beri bendera utas untuk studi tambahan
- Hapus bendera utas
- Ganti nama utas
- Tampilkan dan sembunyikan utas

Tindakan lain:

- Tampilkan tumpukan panggilan untuk utas dalam DataTip
Jendela sumber Indikator utas di tepian kiri menandakan satu atau beberapa utas (nonaktif secara default, diaktifkan dengan menggunakan menu pintasan di jendela Utas) Menu pintasan

- Beralih ke utas
- Beri bendera utas untuk studi tambahan
- Hapus bendera utas
Toolbar Lokasi Debug - Proses saat ini
- Tangguhkan aplikasi
- Lanjutkan aplikasi
- Tangguhkan dan matikan aplikasi
- Utas saat ini
- Alihkan status bendera utas saat ini
- Tampilkan hanya utas yang diberi bendera
- Tampilkan hanya proses saat ini
- Bingkai tumpukan saat ini
- Beralih ke proses lain
- Tangguhkan, lanjutkan, atau matikan aplikasi
- Beralih ke utas lain dalam proses saat ini
- Beralih ke bingkai tumpukan lain dalam utas saat ini
- Beri bendera atau hapus bendera utas saat ini
- Tampilkan hanya utas yang diberi bendera
- Tampilkan hanya proses saat ini
Jendela Tumpukan Paralel - Panggil tumpukan untuk beberapa utas dalam satu jendela.
- Bingkai tumpukan aktif untuk tiap utas.
- Pemanggil dan yang dipanggil untuk metode apa pun.
- Deteksi Kebuntuan
- Memfilter utas yang ditentukan
- Memfilter tumpukan kode eksternal
- Beralih ke tampilan Tugas
- Beri bendera atau hapus bendera utas
-Zoom
- Salin Bingkai Tumpukan
- Simpan/Ekspor semua tumpukan sebagai gambar
Jendela Pengawasan Paralel - Kolom bendera, di mana Anda dapat menandai utas yang ingin Anda beri perhatian khusus.
- Kolom bingkai, di mana panah menandakan bingkai yang dipilih.
Kolom yang dapat dikonfigurasi yang dapat menampilkan komputer, proses, petak, tugas, dan utas.
- Beri bendera atau hapus bendera utas
- Tampilkan hanya utas yang diberi bendera
- Beralih bingkai
- Urutkan kolom
- Kelompokkan utas
- Bekukan atau cairkan utas
- mengekspor data di jendela Pengawasan Paralel
Jendela Tugas - Lihat informasi tentang objek Task termasuk ID tugas, status tugas (terjadwal, berjalan, menunggu, mengalami kebuntuan), dan utas mana yang ditetapkan ke tugas.
- Lokasi saat ini dalam tumpukan panggilan.
- Delegasi yang diteruskan ke tugas pada waktu pembuatan
- Beralih ke tugas saat ini
- Beri bendera atau hapus bendera tugas
- Bekukan atau cairkan tugas
Jendela Utas GPU - Kolom bendera, di mana Anda dapat menandai utas yang ingin Anda beri perhatian khusus.
- Kolom utas saat ini, di mana panah kuning menandakan utas saat ini.
- Kolom Jumlah Utas, yang menampilkan jumlah utas di lokasi yang sama.
- Kolom Baris, yang menampilkan baris kode tempat tiap grup utas berada.
- Kolom Alamat, yang menampilkan alamat petunjuk tempat tiap grup utas berada.
- Kolom Lokasi, yang merupakan lokasi dalam kode alamat.
- Kolom Status, yang menampilkan apakah utas aktif atau diblokir.
- Kolom Petak, yang menampilkan indeks petak untuk utas dalam baris.
- Ubah ke utas yang berbeda
- Tampilkan petak dan utas tertentu
- Tampilkan atau sembunyikan kolom
- Urutkan menurut kolom
- Kelompokkan utas
- Bekukan atau cairkan utas
- Beri bendera atau hapus bendera utas
- Tampilkan hanya utas yang diberi bendera