Unity menyediakan beberapa pilihan untuk debugging di Windows untuk forensic atau live debugging dari proses permainan dan editor.
Unity memungkinkan dua jenis debugging: debugging C++ asli dan debugging yang dikelola C #.
Toko Debugging asli simbol dalam file pdb untuk file biner terkait, seperti exe dan dll.
Pada Windows, standar. Simbol yang dikelola NET disimpan dalam file pdb.
Unity menyediakan toko simbol di http://symbolserver.unity3d.com/. Banyak seperti toko simbol Microsoft, Anda dapat menggunakan URL server Unity di Windows Debugger (WinDbg), atau Visual Studio 2019 dan kemudian untuk resolusi simbol otomatis dan mengunduh.
Untuk menambahkan toko simbol di WinDbg, gunakan perintah .sympath:
.sympath+ SRV*c:\symbols-cache*http://symbolserver.unity3d.com/
Where:
.sympath+
Selain itu, meninggalkan jalan simbol yang ada sendirian, dan menugaskan tampilan toko simbol ini.
SRV*c:\symbols-cache
SRV menunjukkan server jarak jauh untuk mengambil dari, sedangkanc:\symbols
adalah jalur lokal untuk melihat simbol yang diunduh dan terlihat pertama sebelum mengunduh lagi.
*http://symbolserver.unity3d.com/
Jalan ke toko simbol untuk mengambil dari.
Debu Livegging adalah skenario melampirkan debugger untuk proses yang berjalan normal, atau untuk proses di mana pengecualian telah tertangkap. Untuk debugger untuk mengetahui apa yang terjadi, simbol harus dimasukkan dalam build menggunakan langkah di atas. Selain itu, game executable dinamai sesuai dengan nama permainan Anda, sehingga debugger mungkin memiliki masalah menemukan pdb
yang benar jika tidak memiliki akses ke nama yang dapat dieksekusi.
Pada Windows, Microsoft mengatur secara otomatis pada aplikasi crash untuk pergi ke Dr Watson/Error Reporting ke Microsoft. Namun, jika Anda memiliki Studio Visual atau WinDbg diinstal, Microsoft menyediakan opsi untuk memilih ke debug kecelakaan.
Untuk kemudahan menginstal, ikuti konten file registry ini untuk menginstal:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
Konten tambahan untuk debugging Editor:
Unity.exe -dbgbreak
Akan meluncurkan Unity dan segera menawarkan debugger untuk menghubungkan jika penanganan kecelakaan otomatis diatur.
Windows menyediakan fasilitas untuk menyelidiki file dump crash (.dmp atau .mdmp). Tergantung pada jenis dump kecelakaan, Anda mungkin melihat informasi tumpukan atau seluruh memori proses. Konten file dump menentukan penyebab kecelakaan, yang biasanya memiliki setidaknya tumpukan untuk menyelidiki (selamanya tumpukan yang valid).
Untuk menyelidiki file dump, Anda dapat memuatnya melalui Visual Studio atau WinDbg. Meskipun Visual Studio adalah alat yang lebih ramah untuk digunakan, itu sedikit terbatas daripada WinDbg.
Ketika menjalankan Visual Studio, Anda dapat menggunakan ekstensi UnityMixedCallstack untuk VS Code oleh Unity yang membuat debugging lebih mudah.
A NullReferenceException
biasanya terlihat seperti ini:
1b45558c()
> mono-2.0-bdwgc.dll!malloc(unsigned int size=12) Line 163 + 0x5f bytes C
mono-2.0-bdwgc.dll!g_hash_table_insert_replace(_GHashTable * hash=0x065c3960, void * key=0x0018cba4, void * value=0x0018cb8c, int replace=457528232) Line 204 + 0x7 bytes C
mono-2.0-bdwgc.dll!mono_jit_runtime_invoke(_MonoMethod * method=0x242bf8b0, void * obj=0x065c3960, void ** params=0x0018cba4, MonoObject * * exc=0x0018cb8c) Line 4889 + 0xc bytes C
Dengan contoh sebelumnya lagi:
1b45558c()
> mono-2.0-bdwgc.dll!malloc(unsigned int size=12) Line 163 + 0x5f bytes C
mono-2.0-bdwgc.dll!g_hash_table_insert_replace(_GHashTable * hash=0x065c3960, void * key=0x0018cba4, void * value=0x0018cb8c, int replace=457528232) Line 204 + 0x7 bytes C
mono-2.0-bdwgc.dll!mono_jit_runtime_invoke(_MonoMethod * method=0x242bf8b0, void * obj=0x065c3960, void ** params=0x0018cba4, MonoObject * * exc=0x0018cb8c) Line 4889 + 0xc bytes C
Garis tanpa informasi yang dikelola bingkai. Namun, ada cara untuk mendapatkan informasi tumpukan yang dikelola: mono memiliki fungsi builtin yang disebut mono_pmip
, yang menerima alamat bingkai stack dan mengembalikan char * dengan informasi. Anda dapat memanggil mono_pmip
di jendela langsung Visual Studio:
?(char*){,,mono-2.0-bdwgc.dll}mono_pmip((void*)0x1b45558c)
0x26a296c0 " Tiles:OnPostRender () + 0x1e4 (1B4553A8 1B4555DC) [065C6BD0 - Unity Child Domain]" Sitemap
Sitemap Ini hanya bekerja di mana simbol Note: dimuat dengan benar.mono-2.0-bdwgc.dll
symbols are loaded properly.
Secara umum, aplikasi tidak crash dengan debugger terpasang, atau aplikasi crash pada perangkat jarak jauh di mana debugger tidak tersedia. Namun, Anda masih bisa mendapatkan informasi yang berguna jika Anda bisa mendapatkan file dump - ikuti langkah-langkah di bawah ini untuk melakukannya.
Sitemap Instruksi ini berlaku untuk platform Note: dan Windows Standalone saat berjalan di desktop.Universal Windows platforms when running on desktop.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
.LocalDumps
jika tidak ada.“DumpFolder”=<FolderPath goes here> , e.g., C:\Temp
“DumpCount”=dword:00000010
“DumpType”=dword:00000002