Cara memverifikasi simbol Debug Windows

Dukungan untuk Windows Vista Paket Layanan 1 (SP1) berakhir pada 12 Juli 2011. Untuk terus menerima pembaruan keamanan untuk Windows, pastikan Anda menjalankan Windows Vista dengan Paket Layanan 2 (SP2). Untuk informasi selengkapnya, lihat halaman web Microsoft: dukungan berakhir untuk beberapa versi Windows.

Ringkasan

Simbol debug Windows harus memverifikasi setelah memulai kernel debugger (I386kd.exe | WinDbg.exe). debugger dapat memuat dan sajikan prompt, tetapi jika simbol salah, perintah debugging mendatang tidak referensi fungsi yang benar dan variabel yang mengarah ke sporadis hasil. Di bawah ini adalah beberapa bendera merah dan beberapa metode untuk titik pemeriksaan validitas simbol.

Informasi Selengkapnya

Artikel ini mengasumsikan bahwa kernel debugger menjalankan dan telah dimuat berkas Memory.dmp atau tersambung ke komputer jarak jauh. Perintah yang diberikan tidak sepenuhnya didokumentasikan dan hanya kutipan dari Keluaran akan ditampilkan.

Artikel konten

  • Memuat Kernel Debugger

  • Memeriksa waktu pembuatan! driver

  • Menggunakan Link.exe untuk memeriksa waktu pembuatan

  • Unassembling fungsi

  • Simbol Paket Layanan

Memuat Kernel Debugger

Beban normal kernel debugger menampilkan salah satu dari wantian berikut ini:

KD > Uniprocessor sistem 0: kd > sistem multiprosesorPrompt yang ditunjukkan di bawah ini menunjukkan bahwa berkas simbol untuk berkas Ntoskrnl.exe salah. Periksa untuk memastikan bahwa HAL dan kernel multiprocessor atau uniprocessor sesuai yang disalin ke pohon simbol. Contoh:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]could not determine the current processor, using zeroKernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001*** Contents Deleted ***16kd> Ketika kernel debugger memuat berkas Memory.dmp, versi Kernel serta jumlah prosesor ditampilkan di beberapa baris pertama. Konfirmasi bahwa jumlah prosesor yang berhubungan dengan sesuai kernel dan HAL. Informasi pengandar simbol ditampilkan sebagai salah satu simbol dimuat atau ditangguhkan. Beban contoh:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]Kernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001re-loading all kernel symbolsKD: unloading symbols for "ntoskrnl.exe"KD: deferring symbol load for "ntoskrnl.exe" at 80100000KD: Loaded (2248) fpo entries for image (ntoskrnl.exe)KD: "ntoskrnl.exe" loaded 4074 symbols (80100000-801bbb80)KD: loaded symbols for "ntoskrnl.exe"KD: deferring symbol load for "atapi.sys" at fc810000KD: deferring symbol load for "diskdump.sys" at fc800000KD: deferring symbol load for "hal.dll" at 80400000KD: deferring symbol load for "atapi.sys" at 80010000KD: deferring symbol load for "SCSIPORT.SYS" at 80013000KD: deferring symbol load for "Atdisk.sys" at 80001000KD: deferring symbol load for "Scsidisk.sys" at 8001b000KD: deferring symbol load for "Fastfat.sys" at 80372000Unable to read image header for Floppy.SYS at fc820000 - status c0000001*** Contents Deleted ***KD: deferring symbol load for "srv.sys" at fc9e0000KD: deferring symbol load for "ntdll.dll" at 77f80000finished re-loading all kernel symbolsNT!_PspUnhandledExceptionInSystemThread+0x18:80131ff8 b801000000 mov eax,0x1kd> Perhatikan bahwa kernel debugger adalah "Tidak dapat membaca gambar header untuk Floppy.sys di fc820000 - status c0000001." Pesan ini normal karena header pengandar tertentu tidak saat ini dalam memori.

Memeriksa waktu pembuatan! driver

Gunakan ! driver perintah untuk daftar driver yang saat ini dimuat dalam memori. Membuat catatan tentang tanggal dan waktu pengandar dan apakah mereka dapat dimuat. (Ukuran kode dan ukuran Data kolom dalam contoh berikut akan dihapus untuk menyesuaikan lebar artikel.)kd> !driversBase Code Size Data Size Driver Name Creation Time80100000 Ntoskrnl.exe Fri May 26 18:18:36 199580400000 Hal.dll Thu May 11 13:54:18 199580010000 Atapi.sys Tue May 23 21:01:41 199580013000 Scsiport.sys Fri May 05 23:11:06 199580001000 Atdisk.sys Fri May 05 23:10:40 19958001b000 Scsidisk.sys Fri May 05 23:11:01 199580372000 Fastfat.sys Mon May 22 23:57:13 1995fc820000 Floppy.sys Header Paged Outfc830000 Scsicdrm.sys Wed May 10 21:57:03 1995fc840000 Fs_Rec.sys Header Paged Outfc850000 Null.sys Header Paged Outfc860000 Beep.sys Header Paged Outfc870000 I8042prt.sys Fri May 05 23:10:42 1995fc880000 Mouclass.sys Fri May 05 23:10:45 1995fc890000 Kbdclass.sys Fri May 05 23:10:44 1995fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995fc8a0000 S3.sys Fri May 19 21:18:06 1995fc8c0000 Vga.sys Fri May 05 23:10:10 1995fc8d0000 Msfs.sys Fri May 05 23:11:57 1995fc8e0000 Npfs.sys Fri May 05 23:11:40 1995fc900000 Ndis.sys Mon May 22 20:23:18 1995fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995fc940000 Tdi.sys Fri May 05 23:13:09 1995fc920000 Nbf.sys Mon May 08 15:00:47 1995fc950000 Netbios.sys Fri May 05 23:13:19 1995fc960000 Parport.sys Header Paged Outfc970000 Parallel.sys Header Paged Outfc980000 Serial.sys Fri May 05 23:11:20 1995fc990000 Afd.sys Header Paged Outfc9a0000 Rdr.sys Wed May 17 17:18:16 1995fc9e0000 Srv.sys Wed May 24 21:56:59 1995TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)kd> Catatan waktu pembuatan berkas, yang merupakan tanggal berkas tersebut dikompilasi. Saat ini berada stempel Date\Time pada berkas sebenarnya saat melihat subfolder Winnt\System32\Drivers menggunakan File Manager. Jika Anda berlangganan ke Microsoft Developer Network (MSDN) atau Windows perangkat Driver Kit (DDK), alat Link.exe dapat digunakan untuk mengkonfirmasi bahwa berkas Dbg file yang sama yang dibuat ketika pengandar dikompilasi. "Tanggal stempel waktu" dalam contoh berikut ini sesuai dengan "membuat waktu" Netbios.sys dalam output di atas. Gunakan Link.exe untuk memeriksa "tanggal stempel waktu" berkas Dbg:

TAUTAN - dump - header \symbols\sys\netbios.dbgMicrosoft (R) COFF berkas biner Dumper versi 3.00.5270 Copyright (C) Microsoft Corp 1992-1995. Semua hak dilindungi undang-undang. Dump berkas Netbios.dbg

tanda tangan 4944 0 bendera karakteristik 306 14C mesin (i386)2FAAE94F tanggal stempel waktu Fri 05 Mei 23:13:19 1995

Pemeriksaan 8D0B gambar 10000 dasar gambar 70A0 ukuran gambar** Konten dihapus ** jika ! driver perintah menghasilkan baris mana pun yang terlihat seperti berikut ini, tabel penting di dump rusak. Analisis lebih lanjut tentang dump tidak mungkin.

Tidak dapat membaca DosHeader di 0583002a - status 00000000 tidak dapat membaca DosHeader di 0587002a - status 00000000 tidak dapat membaca DosHeader di 0588002a - status 00000000 tidak dapat membaca DosHeader di 058a002a - status 00000000 tidak dapat membaca DosHeader di 058c002a - status 00000000

Unassembling fungsi

Berkas simbol mengaktifkan debugger kernel untuk referensi fungsi dan variabel global namanya. Titik Periksa beberapa unassembled fungsi untuk memastikan bahwa mereka terlihat benar. Banyak fungsi yang compiler dioptimalkan dan tidak harus sesuai dengan contoh di bawah ini. Fungsi kompilator dioptimalkan ditandai dengan FPO dalam tanda kurung di nama fungsi. Fungsi biasanya diawali dengan baik "push ebp" atau "mov eax, fs [000000000]." Pengetahuan dasar bahasa mesin dan pengalaman akan mengaktifkan salah satu untuk mengenali fungsi-fungsi ini.

  • Daftar modul yang dimuat x *!

  • Daftar simbol untuk modul tertentu (misalnya, Ntoskrnl.exe). x nt! *

  • Pilih fungsi untuk unassemble yang compiler dioptimalkan. u NT! _NtUnlockFile

Simbol baik

kd> u NT!_NtUnlockFileu NT!_NtUnlockFileNT!_NtUnlockFile:80156bd8 64a100000000     mov     eax,fs:[00000000]80156bde 55               push    ebp80156bdf 8bec             mov     ebp,esp80156be1 6aff             push    0xff80156be3 68200d1080       push    0x80100d2080156be8 68304f1380       push    0x80134f3080156bed 50               push    eax80156bee 64892500000000   mov     fs:[00000000],espkd> 

Unassembly fungsi harus sama dengan teks di atas; Namun, unassembly ini dapat diubah. Jika unassembly terlihat benar, Anda dapat mengasumsikan bahwa simbol telah dimuat dengan benar untuk modul ini. Unassembly berikut ini dimulai dengan "jnz NT! _NTUnlockFile + 0x22." Jelas, awal fungsi tidak akan mulai dengan kode instruksi langsung. Periksa pohon simbol sekali lagi.

Simbol buruk

kd> u NT!_NTUnlockFileu NT!_NTUnlockFileNT!_NtUnlockFile:801574a4 7520             jnz     NT!_NtUnlockFile+0x22 (801574c6)801574a6 6a00             push    0x0801574a8 8d45dc           lea     eax,[ebp-0x24]801574ab 50               push    eax801574ac 53               push    ebx801574ad ff356c361480     push    dword ptr [NT!_CcNoDelay+0x4 (8014366c)]801574b3 6a01             push    0x1801574b5 ff7508           push    dword ptr [ebp+0x8] 

Simbol Paket Layanan

Ada waktu ketika sulit untuk mencocokkan simbol dengan instalasi tertentu. Pada beberapa titik waktu, Layanan dapat telah ditambahkan menyalin berkas dari CD-ROM pemasangan Windows yang disalin dari berkas yang telah diperbarui dengan paket layanan yang diperlukan. Pastikan Anda menerapkan kembali paket layanan dan dukungan pihak ketiga mana pun disk setelah mengubah konfigurasi sistem menyalin berkas dari CD-ROM pemasangan Windows. Simbol harus diterapkan dalam urutan yang sama seperti instalasi.

INFORMASI TAMBAHAN

Untuk menemukan Kernel Debug How To serangkaian artikel, Cari kunci: debugref. WinDbg 2.0.x simbol teknik Di versi debugger 2.0.x dan lebih besar dari Microsoft Debuggers ada tambahan simbol verifikasi langkah-langkah yang dapat digunakan. Untuk informasi selengkapnya, kunjungi ke situs Web Microsoft berikut ini:

Kit pengembangan driver

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×