Bagikan melalui


Meningkatkan kemungkinan masalah performa diperbaiki

Alat "Laporkan masalah" banyak digunakan oleh pengguna Visual Studio untuk melaporkan berbagai masalah. Tim Visual Studio melihat tren crash dan kelambatan dalam umpan balik pengguna dan mengatasi masalah yang berdampak pada berbagai pengguna. Semakin banyak tiket umpan balik tertentu yang dapat ditindaklanjuti adalah, semakin besar kemungkinan akan didiagnosis dan diselesaikan dengan cepat oleh tim produk. Dokumen ini menjelaskan praktik terbaik saat melaporkan masalah crash atau kelambatan untuk membuatnya lebih dapat ditindaklanjuti.

Praktik terbaik umum

Visual Studio adalah platform besar dan kompleks yang mendukung banyak bahasa, jenis proyek, platform, dan banyak lagi. Performanya adalah fungsi komponen mana yang diinstal dan aktif dalam sesi, ekstensi yang diinstal, pengaturan Visual Studio, konfigurasi mesin, dan akhirnya bentuk kode yang sedang diedit. Mengingat jumlah variabel, sulit untuk mengetahui apakah laporan masalah dari satu pengguna memiliki masalah yang mendasar yang sama dengan laporan masalah dari pengguna lain, meskipun gejala yang terlihat sama. Mengingat bahwa, berikut adalah beberapa praktik terbaik untuk memastikan laporan masalah spesifik Anda memiliki kemungkinan yang lebih tinggi untuk didiagnosis.

Sediakan judul sesering mungkin

Cari tanda tangan yang berbeda untuk masalah yang dilaporkan dan sertakan sebanyak mungkin dalam judul. Jika judul deskriptif, kecil kemungkinan pengguna dengan masalah yang tidak terkait (tetapi gejala dangkal yang sama) akan memilih atau mengomentari tiket Anda, sehingga membuat diagnosis masalah Anda lebih sulit.

Jika ragu, catat laporan masalah baru

Banyak masalah mungkin tidak memiliki tanda tangan atau langkah-langkah yang khas untuk direproduksi. Dalam kasus seperti itu, laporan baru lebih baik daripada upvote atau komentar pada laporan lain, yang melaporkan gejala luar yang serupa. Bergantung pada jenis laporan, sertakan file diagnostik tambahan ke laporan Anda seperti yang dijelaskan nanti dalam dokumen ini.

Praktik terbaik khusus masalah

Dijelaskan di bawah ini adalah masalah yang sulit didiagnosis tanpa file diagnostik yang baik. Setelah mengidentifikasi kasus yang paling menggambarkan masalah Anda, ikuti langkah-langkah umpan balik khusus untuk kasus tersebut.

  • Crash: Crash terjadi saat proses (Visual Studio) berakhir secara tak terduga.

  • Tidak responsif: VS menjadi tidak responsif untuk jangka waktu yang lama.

  • Masalah kelambatan: Tindakan spesifik apa pun di VS lebih lambat dari yang diinginkan

  • CPU tinggi: Periode penggunaan CPU yang diperpanjang yang tidak terduga tinggi

  • Masalah Di Luar Proses: Masalah yang disebabkan oleh proses satelit Visual Studio

Crash

Crash terjadi ketika proses (Visual Studio) berakhir secara tak terduga.

Crash yang dapat direproduksi secara langsung

Crash yang dapat direproduksi secara langsung adalah kasus yang memiliki semua karakteristik berikut:

  • Dapat diamati dengan mengikuti serangkaian langkah yang diketahui

  • Dapat diamati pada beberapa komputer (jika tersedia)

  • Dapat direproduksi dalam kode sampel atau proyek yang dapat ditautkan atau disediakan sebagai bagian dari umpan balik (jika langkah-langkahnya melibatkan pembukaan proyek atau dokumen)

Untuk masalah ini, ikuti langkah-langkah dalam "Cara Melaporkan Masalah" dan pastikan untuk menyertakan:

  • Langkah-langkah untuk mereprodusi masalah

  • Proyek repro mandiri seperti yang dijelaskan di atas. Jika repro mandiri tidak dimungkinkan, maka harap sertakan:

    • Bahasa proyek terbuka (C#, C++, dll.)

    • Jenis proyek (Aplikasi Konsol, ASP.NET, dll.)

Catatan

Umpan balik yang paling berharga: Untuk kasus ini, umpan balik yang paling berharga adalah serangkaian langkah untuk mereproduksi masalah bersama dengan kode sumber sampel.

Crash yang tidak diketahui

Jika Anda tidak yakin apa yang menyebabkan crash atau tampaknya acak, Maka Anda dapat mengambil cadangan secara lokal setiap kali Visual Studio mengalami crash dan melampirkan ke item umpan balik terpisah. Untuk menyimpan cadangan secara lokal saat Visual Studio mengalami crash, jalankan perintah berikut di jendela perintah administrator:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

Sesuaikan jumlah cadangan dan folder cadangan yang sesuai. Temukan informasi selengkapnya tentang pengaturan ini di sini.

Catatan

Cadangan yang diambil menggunakan Task Manager kemungkinan merupakan bitness yang salah, yang membuatnya kurang dapat digunakan. Prosedur yang dijelaskan di atas adalah cara yang lebih disukai untuk menangkap heap dump. Jika Anda ingin menggunakan Task Manager, tutup pengelola tugas yang sedang berjalan, luncurkan Task Manager 32bit (%windir%\syswow64\taskmgr.exe) dan kumpulkan heap dump dari sana.

Catatan

Setiap file cadangan yang dihasilkan oleh metode ini akan berukuran hingga 4 GB. Pastikan untuk mengatur DumpFolder ke lokasi dengan ruang drive yang memadai atau sesuaikan DumpCount dengan tepat.

Setiap kali Visual Studio mengalami crash, visual Studio akan membuat file cadangan devenv.exe.[ number].dmp berkas di lokasi yang dikonfigurasi.

Kemudian, gunakan "Laporkan Masalah... " Visual Studio fitur. Ini akan memungkinkan Anda untuk melampirkan cadangan yang sesuai.

  1. Temukan file cadangan untuk crash yang Anda laporkan (cari file dengan waktu Pembuatan yang benar)

  2. Jika memungkinkan, zip file (*.zip) untuk mengurangi ukurannya sebelum mengirimkan umpan balik

  3. Ikuti langkah-langkah dalam "Cara Melaporkan Masalah", dan lampirkan heap dump ke item umpan balik baru.

Catatan

Umpan balik yang paling berharga: Untuk kasus ini, umpan balik yang paling berharga adalah heap dump yang diambil pada saat crash.

Tidak responsif

VS menjadi tidak responsif untuk jangka waktu yang lama.

Ketidakresponsifan yang Dapat Direproduksi Secara Langsung

Seperti yang dijelaskan di bagian yang sesuai pada crash, untuk masalah yang dapat dengan mudah direproduksi, terlihat pada beberapa komputer dan dapat ditunjukkan dalam sampel kecil, laporan umpan balik yang paling berharga adalah yang mencakup langkah-langkah untuk mereproduksi masalah, dan menyertakan kode sumber sampel yang menunjukkan masalah.

Ketidakresponsifan Tidak Diketahui

Jika ketidakresponsifan memanifestasikan dirinya dengan cara yang tidak dapat diprediksi, pada kejadian berikutnya, luncurkan instans baru Visual Studio dan laporkan masalah dari instans tersebut. Di layar "Rekam", pastikan untuk memilih sesi Visual Studio yang tidak responsif. (Untuk informasi selengkapnya tentang cara merekam tindakan yang dapat kita ikuti untuk mereproduksi masalah, lihat Langkah 8 pada Cara melaporkan halaman masalah .)

Jika instans Visual Studio yang tidak responsif diluncurkan dalam mode Administrator, maka instans kedua juga perlu diluncurkan dalam mode Administrator.

Catatan

Umpan balik yang paling berharga: Untuk kasus ini, umpan balik yang paling berharga adalah heap dump yang diambil pada saat Ketidakresponsifan.

Masalah Kelambatan dan CPU Tinggi

Apa yang membuat masalah penggunaan CPU yang lambat atau tinggi paling dapat ditindak lanjuti adalah jejak performa yang diambil saat operasi lambat atau peristiwa CPU tinggi sedang berlangsung.

Catatan

Jika memungkinkan, isolasi setiap skenario dalam laporan umpan balik tertentu yang terpisah. Misalnya, jika mengetik dan navigasi keduanya lambat, ikuti langkah-langkah di bawah ini sekali per masalah. Ini membantu tim produk mengisolasi penyebab masalah tertentu.

Untuk hasil terbaik dalam menangkap performa, ikuti langkah-langkah berikut:

  1. Jika belum berjalan, buka salinan Visual Studio tempat Anda akan mereproduksi masalah

    • Siapkan semuanya untuk mereprodusi masalah. Misalnya, jika Anda memerlukan proyek tertentu untuk dimuat dengan file tertentu yang dibuka, pastikan kedua langkah tersebut selesai sebelum melanjutkan.

    • Jika Anda tidak melaporkan masalah khusus untuk memuat solusi, coba tunggu 5-10 menit (atau lebih, tergantung pada ukuran solusi) setelah membuka solusi sebelum merekam jejak performa. Proses beban solusi menghasilkan sejumlah besar data, jadi menunggu beberapa menit membantu kami fokus pada masalah spesifik yang Anda laporkan.

  2. Mulai salinan kedua Visual Studio tanpa solusi terbuka

  3. Di salinan baru Visual Studio, buka alat Laporkan Masalah

  4. Ikuti langkah-langkah dalam Cara Melaporkan Masalah hingga Anda mencapai langkah "Berikan jejak dan heap dump (opsional)".

  5. Pilih untuk merekam salinan pertama Visual Studio (yang mengalami masalah performa) dan mulai merekam.

    • Aplikasi Perekam Langkah akan muncul dan mulai merekam.

    • Selama perekaman, lakukan tindakan bermasalah di salinan pertama Visual Studio. Sulit bagi kami untuk memperbaiki masalah performa tertentu jika tidak muncul dalam waktu yang dicatat.

    • Jika tindakan lebih pendek dari 30 detik dan dapat dengan mudah diulang, ulangi tindakan untuk lebih menunjukkan masalah.

    • Untuk sebagian besar kasus, jejak 60 detik cukup untuk menunjukkan masalah, terutama jika tindakan bermasalah berlangsung (atau diulang) selama lebih dari 30 detik. Durasi dapat disesuaikan seperlunya untuk menangkap perilaku yang ingin Anda perbaiki.

  6. Klik "Hentikan Rekaman" di Perekam Langkah segera setelah operasi lambat atau peristiwa CPU tinggi yang ingin Anda laporkan selesai. Mungkin perlu beberapa menit untuk memproses jejak performa.

  7. Setelah selesai, akan ada beberapa lampiran untuk umpan balik Anda. Lampirkan file tambahan apa pun yang dapat membantu mereproduksi masalah (proyek sampel, cuplikan layar, video, dll.).

  8. Kirim umpan balik.

Saat merekam jejak performa, jika operasi lambat atau CPU tinggi yang Anda laporkan berakhir, maka segera hentikan rekaman. Jika terlalu banyak informasi dikumpulkan, informasi terlama akan ditimpa. Jika pelacakan tidak segera dihentikan (dalam beberapa detik) setelah operasi yang menarik, data pelacakan yang berguna akan ditimpa.

Jangan langsung melampirkan jejak performa ke item umpan balik yang ada di situs web Komunitas Pengembang. Meminta/memberikan informasi tambahan adalah alur kerja yang didukung di alat Laporkan Masalah bawaan Visual Studio. Jika pelacakan performa diperlukan untuk menyelesaikan item umpan balik sebelumnya, kami akan mengatur status item umpan balik ke "Perlu Info Lebih Lanjut", yang dapat ditanggapi dengan cara yang sama seperti melaporkan masalah baru. Untuk instruksi terperinci, silakan lihat bagian "Perlu Info Lebih Lanjut" di Laporkan dokumen alat Masalah.

Catatan

Umpan balik yang paling berharga: Untuk hampir semua masalah CPU yang lambat/tinggi, umpan balik yang paling berharga adalah deskripsi tingkat tinggi tentang apa yang anda coba lakukan, bersama dengan jejak performa (*.etl.zip) yang menangkap perilaku selama waktu itu.

Jejak Performa Tingkat Lanjut

Kemampuan pengumpulan jejak dalam alat Laporan-masalah cukup untuk sebagian besar skenario. Tetapi ada kalanya kontrol lebih besar atas pengumpulan jejak diperlukan (misalnya, jejak dengan ukuran buffer yang lebih besar), dalam hal ini PerfView adalah alat yang bagus untuk digunakan. Langkah-langkah untuk merekam jejak performa secara manual menggunakan alat PerfView dapat ditemukan di halaman Rekam jejak performa dengan PerfView .

Masalah Di Luar Proses

Catatan

Dimulai dengan Visual Studio 2019 versi 16.3, log di luar proses secara otomatis dilampirkan ke umpan balik yang dikirimkan menggunakan alat Laporkan Masalah. Namun, jika masalah ini dapat direproduksi secara langsung, mengikuti langkah-langkah di bawah ini masih dapat membantu menambahkan informasi tambahan untuk membantu mendiagnosis masalah dengan lebih baik.

Ada sejumlah proses satelit yang berjalan paralel dengan Visual Studio dan menyediakan berbagai fitur dari luar proses Visual Studio utama. Jika kesalahan terjadi di salah satu proses satelit ini, biasanya terlihat di sisi Visual Studio sebagai 'StreamJsonRpc.RemoteInvocationException' atau 'StreamJsonRpc.ConnectionLostException'.

Apa yang membuat jenis masalah ini paling dapat ditindaklanjuti adalah menyediakan log tambahan yang dapat dikumpulkan dengan mengikuti langkah-langkah berikut:

  1. Jika ini adalah masalah yang dapat direproduksi secara langsung, mulailah dengan menghapus folder %temp%/servicehub/logs . Jika Anda tidak dapat mereproduksi masalah ini, pertahankan folder ini tetap utuh dan abaikan poin berikut:

    • Atur variabel lingkungan global ServiceHubTraceLevel ke Semua
    • Rekonstruksi masalah tersebut.
  2. Unduh Microsoft Visual Studio dan Alat Pengumpulan Log .NET Framework di sini.

  3. Jalankan alat. Ini menghasilkan file zip ke %temp%/vslogs.zip. Lampirkan file tersebut ke umpan balik Anda.