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.
Utas adalah urutan instruksi di mana sistem operasi memberikan waktu prosesor. Setiap proses yang berjalan dalam sistem operasi terdiri dari setidaknya satu utas. Proses yang memiliki lebih dari satu utas disebut multithreaded.
Komputer dengan beberapa prosesor, prosesor multi-inti, atau proses hyperthreading dapat menjalankan beberapa utas simultan. Pemrosesan paralel menggunakan banyak utas dapat sangat meningkatkan performa program, tetapi mungkin juga membuat penelusuran kesalahan lebih sulit karena Anda melacak banyak utas.
Pemrosesan paralel yang sempurna tidak selalu dimungkinkan. Utas terkadang harus disinkronkan. Satu utas mungkin harus menunggu hasil dari utas lain, atau satu utas mungkin memerlukan akses eksklusif ke sumber daya yang digunakan utas lain. Masalah sinkronisasi adalah penyebab umum bug dalam aplikasi multithreaded. Terkadang utas mungkin akhirnya menunggu sumber daya yang tidak pernah tersedia. Ini menghasilkan kondisi yang disebut kebuntuan.
Utas dan proses
Utas dan proses adalah konsep terkait dalam ilmu komputer. Keduanya mewakili urutan instruksi yang harus dijalankan dalam urutan tertentu. Namun, instruksi dalam utas atau proses terpisah dapat dijalankan secara paralel.
Proses ada di sistem operasi dan sesuai dengan apa yang dilihat pengguna sebagai program atau aplikasi. Utas, di sisi lain, ada dalam proses. Untuk alasan ini, utas terkadang disebut sebagai proses ringan. Setiap proses terdiri dari satu atau beberapa utas.
Keberadaan 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 men-debug aplikasi multithread
Visual Studio menyediakan alat yang berbeda untuk digunakan dalam men-debug aplikasi multithreaded.
Untuk utas, alat utama untuk men-debug utas adalah jendela Tumpukan Paralel , jendela Parallel Watch , penanda utas di jendela sumber, jendela Utas , dan toolbar Lokasi Debug . Untuk mempelajari tentang tampilan Utas di Tumpukan Paralel, lihat Men-debug kebuntuan menggunakan tampilan Utas. Untuk mempelajari cara menggunakan jendela Parallel Stacks dan Parallel Watch , lihat Mulai men-debug aplikasi multithreaded. Artikel memulai menunjukkan cara menggunakan penanda utas. Selain itu, lihat Panduan: Men-debug aplikasi C++ AMP.
Untuk kode .NET yang menggunakan asinkron, alat utama untuk penelusuran kesalahan adalah tampilan Tugas di jendela Tumpukan Paralel . Untuk memulai, lihat Men-debug aplikasi asinkron (.NET).
Untuk utas, alat utama untuk men-debug utas adalah jendela Tumpukan Paralel , jendela Parallel Watch , penanda utas di jendela sumber, jendela Utas , dan toolbar Lokasi Debug . Untuk mempelajari tentang tampilan Utas di Tumpukan Paralel, lihat Menampilkan utas dan tugas di jendela Tumpukan Paralel. Untuk mempelajari cara menggunakan jendela Parallel Stacks dan Parallel Watch , lihat Mulai men-debug aplikasi multithreaded. Artikel memulai menunjukkan cara menggunakan penanda utas. Selain itu, lihat Panduan: Men-debug aplikasi C++ AMP.
Untuk kode .NET yang menggunakan asinkron, alat utama untuk penelusuran kesalahan adalah tampilan Tugas di jendela Tumpukan Paralel . Untuk informasi selengkapnya, lihat Utas dan tugas di jendela Tumpukan Paralel.
Untuk men-debug utas pada GPU, alat utama adalah jendela Utas GPU . Lihat Cara: Menggunakan jendela Utas GPU.
Untuk proses, alat utama adalah kotak dialog Lampirkan ke Proses , jendela Proses , dan toolbar Lokasi Debug .
Visual Studio juga menyediakan titik henti dan titik pelacakan yang kuat, yang dapat berguna saat Anda men-debug aplikasi multithread. Gunakan kondisi dan filter titik henti untuk menempatkan titik henti pada utas individual. Tracepoints memungkinkan Anda melacak eksekusi program Anda tanpa melanggar, untuk mempelajari masalah seperti kebuntuan. Untuk informasi selengkapnya, lihat Tindakan breakpoint dan titik pelacakan.
Men-debug aplikasi multithreaded yang memiliki antarmuka pengguna bisa sangat sulit. Anda mungkin mempertimbangkan untuk menjalankan aplikasi pada komputer kedua dan menggunakan penelusuran kesalahan jarak jauh. Untuk informasi selengkapnya, lihat Penelusuran kesalahan jarak jauh.
Tabel berikut ini memperlihatkan informasi yang tersedia dan tindakan yang bisa Anda lakukan di masing-masing tempat ini:
| Antarmuka Pengguna | Informasi Yang Tersedia | Tindakan yang Dapat Anda Lakukan |
|---|---|---|
| Lampirkan ke kotak dialog Proses | Proses yang Tersedia dapat Anda lampirkan ke: - Nama proses (.exe) - Nomor ID Proses - Judul Bilah Menu - Jenis (Terkelola v4.0; Dikelola v2.0, v1.1, v1.0; x86; x64; IA64) - Nama Pengguna (nama akun) - Nomor sesi |
Pilih proses yang akan dilampirkan Pilih komputer jarak jauh Ubah tipe transportasi untuk menyambungkan ke komputer jarak jauh |
| Jendela proses | Proses Terlampir: - Nama Proses - Nomor ID Proses - Jalur untuk memproses .exe - Judul Bilah Menu - Negara Bagian (Istirahat. Sedang berjalan) - Debugging (Asli, Terkelola, dan sebagainya.) - Jenis transportasi (default, asli tanpa autentikasi) - Kualifikasi Transportasi (komputer jarak jauh) |
Peralatan: -Memasang -Melepaskan -Menyelesaikan Menu pintasan: -Memasang -Melepaskan - Lepaskan ketika penelusuran kesalahan dihentikan -Menyelesaikan |
| Toolbar Lokasi Debug | - Proses saat ini - Menangguhkan aplikasi - Melanjutkan aplikasi - Menangguhkan dan mematikan aplikasi - Utas saat ini - Alihkan status bendera utas saat ini - Hanya tampilkan utas berbendera - Hanya tampilkan proses saat ini - Bingkai tumpukan saat ini |
- Beralih ke proses lain - Menangguhkan, melanjutkan, atau mematikan aplikasi - Beralih ke utas lain dalam proses saat ini - Beralih ke bingkai tumpukan lain di utas saat ini - Bendera atau utas unflag saat ini - Hanya tampilkan utas berbendera - Tampilkan hanya proses saat ini |
| Jendela Tumpukan Paralel | - Panggil tumpukan untuk beberapa utas dalam satu jendela. - Bingkai tumpukan aktif untuk setiap utas. - Penelepon dan panggilan untuk metode apa pun. - Deteksi Kebuntuan |
- Memfilter utas yang ditentukan - Memfilter tumpukan kode eksternal - Beralih ke tampilan Tugas - Bendera atau unflag utas -Zoom - Salin Bingkai Tumpukan - Simpan/Ekspor semua tumpukan sebagai gambar |
| Jendela Parallel Watch | - Kolom bendera, tempat Anda dapat menandai utas yang ingin Anda perhatikan secara khusus. - Kolom bingkai, di mana panah menunjukkan bingkai yang dipilih. - Kolom yang dapat dikonfigurasi yang dapat menampilkan mesin, proses, petak peta, tugas, dan utas. |
- Bendera atau unflag utas - Hanya menampilkan utas yang ditandai - Beralih bingkai - Mengurutkan kolom - Utas grup - Membekukan atau mencairkan utas - ekspor data di jendela Parallel Watch |
| Jendela utas | Utas dalam proses saat ini: - ID Utas - ID Terkelola - Kategori (utas utama, utas antarmuka, handler 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: -Mencari - Cari Tumpukan Panggilan - Benderai Hanya Kode Saya - Benderai Pemilihan Modul Kustom - Kelompokkan menurut -Kolom - Perluas/Ciutkan tumpukan panggilan - Perluas/Ciutkan grup - Benang Beku/Cair Menu pintasan: - Tampilkan utas di sumber - Beralih ke utas - Membekukan utas yang sedang berjalan - Mencairkan utas beku - Menandai utas untuk studi tambahan - Unflag utas - Mengganti nama utas - Tampilkan dan sembunyikan utas Tindakan lain: - Menampilkan tumpukan panggilan untuk utas dalam DataTip |
| Jendela sumber | Indikator utas di selokan kiri menunjukkan satu atau beberapa utas (nonaktif secara default, diaktifkan dengan menggunakan menu pintasan di jendela Utas ) | Menu pintasan: - Beralih ke utas - Menandai utas untuk studi tambahan - Unflag utas |
| Jendela tugas | - Lihat informasi tentang Task objek termasuk ID tugas, status tugas (terjadwal, berjalan, menunggu, di-deadlock), dan utas mana yang ditetapkan ke tugas. - Lokasi saat ini dalam tumpukan panggilan. - Delegasi diteruskan ke tugas pada waktu pembuatan |
- Beralih ke tugas saat ini - Bendera atau batalkan tugas - Membekukan atau mencairkan tugas |
| Jendela Utas GPU | - Kolom bendera, tempat Anda dapat menandai utas yang ingin Anda perhatikan secara khusus. - Kolom utas saat ini, di mana panah kuning menunjukkan utas saat ini. - Kolom Jumlah Utas , yang menampilkan jumlah utas di lokasi yang sama. - Kolom Baris , yang menampilkan baris kode tempat setiap grup utas berada. - Kolom Alamat , yang menampilkan alamat instruksi tempat setiap grup utas berada. - Kolom Lokasi , yang merupakan lokasi dalam kode alamat. - Kolom Status , yang menunjukkan apakah utas aktif atau diblokir. - Kolom Petak peta , yang menunjukkan indeks petak peta untuk utas dalam baris. |
- Ubah ke utas yang berbeda - Menampilkan petak dan utas tertentu - Menampilkan atau menyembunyikan kolom - Mengurutkan menurut kolom - Utas grup - Membekukan atau mencairkan utas - Bendera atau unflag utas - Hanya menampilkan utas yang ditandai |