Bagikan melalui


Cara men-debug masalah aktivasi CLR

Catatan

Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.

Jika Anda mengalami masalah dalam menjalankan aplikasi dengan versi yang benar dari runtime bahasa umum (CLR), Anda dapat melihat dan men-debug log aktivasi CLR. Log ini bisa sangat berguna dalam menentukan akar penyebab masalah aktivasi, saat aplikasi Anda memuat versi CLR yang berbeda dari yang diharapkan atau tidak memuat CLR sama sekali. Kesalahan Inisialisasi .NET Framework: Mengelola Pengalaman Pengguna membahas pengalaman ketika tidak ada CLR yang ditemukan untuk aplikasi.

Pencatatan aktivasi CLR dapat diaktifkan di seluruh sistem dengan menggunakan kunci registri HKEY_LOCAL_MACHINE atau variabel lingkungan sistem. Log akan dibuat hingga entri registri atau variabel lingkungan dihapus. Atau, Anda dapat menggunakan variabel lingkungan pengguna atau proses-lokal untuk mengaktifkan pengelogan dengan cakupan dan durasi yang berbeda.

Log aktivasi CLR tidak boleh disamakan dengan log pengikatan rakitan, yang sama sekali berbeda.

Untuk mengaktifkan pengelogan aktivasi CLR

Menggunakan registri

  1. Di Editor Registri, navigasikan ke folder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework (pada komputer 32-bit) atau HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework (pada komputer 64-bit).

  2. Tambahkan nilai string bernama CLRLoadLogDir, dan atur ke jalur lengkap direktori yang ada tempat Anda ingin menyimpan log aktivasi CLR.

Pengelogan aktivasi tetap diaktifkan hingga Anda menghapus nilai string.

Menggunakan variabel lingkungan

  • Atur variabel lingkungan COMPLUS_CLRLoadLogDir ke string yang mewakili jalur lengkap direktori yang ada tempat Anda ingin menyimpan log aktivasi CLR.

    Cara Anda mengatur variabel lingkungan akan menentukan cakupannya:

    • Jika Anda mengaturnya di tingkat sistem, pengelogan aktivasi diaktifkan untuk semua aplikasi .NET Framework di komputer tersebut hingga variabel lingkungan dihapus.

    • Jika Anda mengaturnya di tingkat pengguna, pengelogan aktivasi diaktifkan hanya untuk akun pengguna saat ini. Pengelogan berlanjut hingga variabel lingkungan dihapus.

    • Jika Anda mengaturnya dari dalam proses sebelum memuat CLR, pengelogan aktivasi diaktifkan hingga proses dihentikan.

    • Jika Anda mengaturnya pada perintah sebelum menjalankan aplikasi, pencatatan aktivasi diaktifkan untuk aplikasi apa pun yang dijalankan dari prompt perintah tersebut.

      Misalnya, untuk menyimpan log aktivasi di direktori c:\clrloadlogs dengan cakupan tingkat proses, buka jendela Prompt Perintah dan ketik berikut ini sebelum Anda menjalankan aplikasi:

      set COMPLUS_CLRLoadLogDir=c:\clrloadlogs
      

Contoh

Log aktivasi CLR menyediakan sejumlah besar data tentang aktivasi CLR dan penggunaan API hosting CLR. Sebagian besar data ini digunakan secara internal oleh Microsoft, tetapi beberapa data juga dapat berguna bagi pengembang, seperti yang dijelaskan dalam artikel ini.

Log mencerminkan urutan pemanggilan CLR hosting API. Hal ini juga mencakup data berguna tentang rangkaian runtime yang diinstal yang terdeteksi di komputer. Format log aktivasi CLR tidak didokumentasikan dengan sendirinya, tetapi dapat digunakan untuk membantu pengembang yang perlu menyelesaikan masalah aktivasi CLR.

Catatan

Anda tidak dapat membuka log aktivasi hingga proses yang menggunakan CLR dihentikan.

Catatan

Log aktivasi CLR tidak dilokalkan; log selalu dibuat dalam bahasa Inggris.

Dalam contoh log aktivasi berikut, informasi yang paling berguna disorot dan dijelaskan setelah log.

532,205950.367,CLR Loading log for C:\Tests\myapp.exe
532,205950.367,Log started at 4:26:12 PM on 10/6/2011
532,205950.367,-----------------------------------
532,205950.382,FunctionCall: _CorExeMain
532,205950.382,FunctionCall: ClrCreateInstance, Clsid: {2EBCD49A-1B47-4A61-B13A-4A03701E594B}, Iid: {E2190695-77B2-492E-8E14-C4B3A7FDD593}
532,205950.382,MethodCall: ICLRMetaHostPolicy::GetRequestedRuntime. Version: (null), Metahost Policy Flags: 0x168, Binary: (null), Iid: {BD39D1D2-BA2F-486A-89B0-B4B0CB466891}
532,205950.382,Installed Runtime: v4.0.30319. VERSION_ARCHITECTURE: 0
532,205950.382,Input values for ComputeVersionString follow this line
532,205950.382,-----------------------------------
532,205950.382,Default Application Name: C:\Tests\myapp.exe
532,205950.382,IsLegacyBind is: 0
532,205950.382,IsCapped is 0
532,205950.382,SkuCheckFlags are 0
532,205950.382,ShouldEmulateExeLaunch is 0
532,205950.382,LegacyBindRequired is 0
532,205950.382,-----------------------------------
532,205950.382,Parsing config file: C:\Tests\myapp.exe
532,205950.382,UseLegacyV2RuntimeActivationPolicy is set to 0
532,205950.382,LegacyFunctionCall: GetFileVersion. Filename: C:\Tests\myapp.exe
532,205950.382,LegacyFunctionCall: GetFileVersion. Filename: C:\Tests\myapp.exe
532,205950.382,C:\Tests\myapp.exe was built with version: v2.0.50727
532,205950.382,ERROR: Version v2.0.50727 is not present on the machine.
532,205950.398,SEM_FAILCRITICALERRORS is set to 0
532,205950.398,Launching feature-on-demand installation. CmdLine: C:\Windows\system32\fondue.exe /enable-feature:NetFx3
532,205950.398,FunctionCall: RealDllMain. Reason: 0
532,205950.398,FunctionCall: OnShimDllMainCalled. Reason: 0
  • Log Pemuatan CLR menyediakan jalur ke file yang dapat dieksekusi yang memulai proses yang memuat kode terkelola. Perhatikan bahwa ini bisa menjadi host asli.

    532,205950.367,CLR Loading log for C:\Tests\myapp.exe
    
  • Runtime Terinstal adalah kumpulan versi CLR yang diinstal di komputer yang merupakan kandidat untuk permintaan aktivasi.

    532,205950.382,Installed Runtime: v4.0.30319. VERSION_ARCHITECTURE: 0
    
  • dibuat dengan versi adalah versi CLR yang digunakan untuk membangun biner yang disediakan untuk metode seperti ICLRMetaHostPolicy::GetRequestedRuntime.

    532,205950.382,C:\Tests\myapp.exe was built with version: v2.0.50727
    
  • Penginstalan fitur sesuai permintaan mengacu pada pengaktifan .NET Framework 3.5 di Windows 8. Lihat Kesalahan Inisialisasi .NET Framework: Mengelola Pengalaman Pengguna untuk informasi selengkapnya tentang skenario ini.

    532,205950.398,Launching feature-on-demand installation. CmdLine: C:\Windows\system32\fondue.exe /enable-feature:NetFx3
    

Lihat juga