ID Artikel: 164151 - Kajian Terakhir: 15 September 2011 - Revisi: 2.0

Cara membandingkan biner gambar proyek yang sama membangun

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Kadang-kadang Anda mungkin perlu untuk membandingkan membangun gambar (EXE, DLL, dll) proyek yang sama yang dibangun pada waktu yang berbeda. Karena gambar berisi waktu dan tanggal perangko, file biasa membandingkan laporan perbedaan antara gambar. Anda dapat menggunakan utilitas DUMPBIN untuk menghasilkan berkas yang benar membandingkan.

INFORMASI LEBIH LANJUT

Perangko waktu dan tanggal dapat dihapus dari gambar dibangun tanpa menghapus informasi yang relevan (kode dan data) menggunakan /RAWDATA beralih tersedia dalam utilitas DUMPBIN. Setiap utilitas membandingkan file dapat digunakan pada DUMPBIN output sebagai berikut:
   DUMPBIN  /RAWDATA  MyApp.EXE > first.txt
				
Jika Myapp.exe dibangun lagi pada waktu yang berbeda, kemudian menggunakan DUMPBIN sebagai berikut:
   DUMPBIN  /RAWDATA  MyApp.EXE > second.txt
				
Anda sekarang dapat membandingkan first.txt dan second.txt menggunakan file membandingkan utilitas seperti:
       FC /B first.txt second.txt
				
Menjalankan DUMPBIN dalam direktori penduduk gambar. Prosedur di atas berlaku untuk membangun rilis hanya karena Debug membangun catatan waktu dan tanggal cap pada gambar (terlepas dari /Zi atau /Z7) dan DUMPBIN tidak menghapus informasi ini. Jika standar macro __DATE__ dan __TIME__ digunakan dalam sumber, waktu dan tanggal Cap tercatat dalam gambar akan tidak dapat dihapus oleh DUMPBIN untuk membangun rilis. Dalam keadaan ini, Anda dapat menggunakan tombol /DISASM. Namun, /DISASM beralih menghapus waktu dan tanggal Cap, serta data diinisialisasi. Ini berarti bahwa Anda tidak akan membandingkan gambar benar.

CATATAN: Ada tidak ada jaminan bahwa Visual C++ akan menghasilkan ganda sama gambar ketika membangun file sumber yang sama pada berturut-turut membangun. Namun, Anda dijamin bahwa EXE (atau DLL) akan berperilaku persis sama dalam satu cara di bawah eksekusi, semua hal-hal lain yang sama. Kompilasi dan link pilihan dan link order berperan dalam apakah dua biner gambar akan membandingkan sama.

Jika Anda mengikuti prosedur yang diuraikan di atas dan bandingkan dua gambar sama, maka gambar yang sama. Jika dua foto tidak membandingkan sama, maka masih ada ketidakpastian untuk Apakah gambar yang sama atau tidak.

Bagian sumber daya executable berisi tanggal perangko. Dalam sumber daya bagian dari sana eksekusi, adalah header untuk setiap jenis sumber daya (misalnya, string meja, dialog, ikon). Masing-masing header ini berisi date/time stamp.

Menggunakan Microsoft Portable Executable dan Format File objek umum Spesifikasi dari perpustakaan MSDN untuk mengubah perangko waktu sehingga mereka tidak akan menjadi faktor dalam perbandingan atau mengabaikan bagian sumber daya di perbandingan.

Untuk mengidentifikasi bagian yang mengandung perbedaan, jalankan utilitas WinDiff Dikirim dengan Visual C++:
   WINDIFF first.txt second.txt
				
Bagian yang mengandung perbedaan akan mulai dengan garis yang mirip berikut (meskipun jumlah mungkin berbeda):
   RAW DATA #5
				
Kemudian, bandingkan dengan output dari berikut:
   dumpbin /headers MyApp.exe
				
Anda harus menemukan header yang dimulai dengan berikut:
   SECTION HEADER #5
      .rsrc name
				
Karena nomor bagian sesuai bagian dengan perbedaan data mentah (dalam contoh ini, nomor bagian adalah 5), maka perbedaan terjadi dalam bagian yang bernama ".rsrc". Ini adalah nama sumber daya bagian.

Mengekspor meja direktori memiliki tanggal/time stamp juga. Biasanya ini adalah terletak di bagian .rdata (Visual C++ 4.2 dan kemudian) atau .edata bagian (sebelumnya dari Visual C++ 4.2). Tabel ini ada hanya jika Anda ekspor simbol dari PE gambar.

Impor direktori tabel juga memiliki sebuah tanggal/time stamp. Biasanya ini adalah terletak di bagian .idata. Salah satu tabel ini ada untuk setiap DLL untuk yang gambar ini merujuk. Cap waktu ini adalah nol kecuali gambar adalah terikat. Setelah gambar terikat, date/time stamp diatur ke tanggal/waktu perangko DLL dari di mana simbol-simbol yang diimpor.

Sekali lagi, silakan merujuk ke Microsoft portabel Executable dan Common Objek File Format spesifikasi di MSDN perpustakaan untuk informasi tentang cara untuk mencari informasi tanggal di gambar.

Berlaku bagi:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Kata kunci: 
kbproductlink kbarttypeinf kbhowto kbmt KB164151 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:164151  (http://support.microsoft.com/kb/164151/en-us/ )