2014-09-02 8 views
5

हाय मैं और एक exe के लिए क्रैश डम्प संलग्न प्रतीकों है.लेकिन मैं इस त्रुटि हो रही है के लिए चेकसम सत्यापन में असमर्थ।exe ​​

इसका कारण क्या होगा?

+0

यह एक कामयाब (.NET) निष्पादन योग्य या एक देशी एक है? –

+0

निष्पादन योग्य .. मुझे एक और त्रुटि मिल रही है: abc.pdb के लिए प्रतीक सर्वर का उपयोग नहीं कर सकता - कोई हेडर जानकारी उपलब्ध नहीं है..क्या आप मुझे बता सकते हैं कि इसे कैसे हल करें? – mahan07

उत्तर

10

Unable to verify checksum उत्सर्जित होता है जब checksum in pe header isnt verifiable

से ऐसा हो सकता है, तो सवाल में exe संकलित किया गया था और इसे लिंक without using /RELEASE लिंकर विकल्प
सामान्य परियोजना आधारित संकलन लिंक सेट इस विकल्प nmake/batfile आधारित संकलन इस स्विच को छोड़ सकते हैं और इस उत्पादन

a simple helloworld compiled and linked with and without /RELEASE लिंकर विकल्प को जन्म दे सकता (pdb simpilicity और diffed to show the difference in timestamp and checksum और एल oaded in windbg और checksum warning is generated only for the exe with no checksum in pe header जेनरेट नहीं)

सरल हैलो world.cpp सामग्री

testrelease:\>dir /b & type testrelease.cpp 
testrelease.cpp 
#include <stdio.h> 
int main (void)  { 
     printf("hello my relase\n"); 
     return 0; 
} 

/विज्ञप्ति

testrelease:\>cl /nologo testrelease.cpp 
testrelease.cpp 

exe ​​का नाम बदलने और/विज्ञप्ति

testrelease:\>ren testrelease.exe testrelease_norel.exe  
testrelease:\>cl /nologo testrelease.cpp /link /release 
testrelease.cpp  
साथ साथ एक ही स्रोत संकलन के बिना संकलन

की तुलना दोनों व्यय

testrelease:\>fc /b testrelease.exe testrelease_norel.exe 
Comparing files testrelease.exe and TESTRELEASE_NOREL.EXE 
000000E0: D6 CE 
00000130: A3 00 
00000131: 95 00 
00000132: 01 00 

तुलना

testrelease:\>xxd -s +0x3c -l 1 testrelease.exe 
000003c: d8          .  
testrelease:\>xxd -s +0x3c -l 1 testrelease_norel.exe 
000003c: d8          .  
testrelease:\>echo d8 = NT_HEADER so e0 = TimeDateStamp and 130 = CheckSum 
d8 = NT_HEADER so e0 = TimeDateStamp and 130 = CheckSum  

windbg चेतावनी में दोनों व्यय लोड हो रहा है के उत्पादन का विश्लेषण करने चेकसम

testrelease:\>cdb -c ".reload /f ; q" testrelease.exe  
.*** ERROR: Module load completed but symbols could not be loaded for image00400 

testrelease:\>cdb -c ".reload /f ; q" testrelease_norel.exe  
.*** WARNING: Unable to verify checksum for image00400000 
*** ERROR: Module load completed but symbols could not be loaded for image004000 

बिना केवल एक exe के लिए उत्पन्नno symbol header available त्रुटि का अर्थ है exe was compiled without debug information

जब तक आप स्क्रैच से पुनः डिबग जानकारी में विशेषज्ञता के लिए बहुत कुछ है आप इसके बारे में ज्यादा नहीं कर सकते

दोनों निष्पादनयोग्य कि ऊपर संकलित त्रुटि उत्पन्न होगा क्योंकि मैं जानबूझकर नहीं बनाया है डिबग जानकारी

DBGHELP: image00400000 missing debug info. Searching for pdb anyway 
DBGHELP: Can't use symbol server for image00400000.pdb - no header information available