2010-02-06 10 views
7

मैं कभी-कभी विंडोज़ पर निर्मित निष्पादन योग्य चलाने की कोशिश करते समय इस त्रुटि में भाग लेता हूं, लेकिन मुझे नहीं पता कि इसका कारण क्या है या इसे कैसे ठीक किया जाए। सामान्य एमएसवीसी डीबगर के साथ, यह सिर्फ एक संवाद पॉप अप करता है और कुछ भी करने या किसी भी चीज़ को देखने का मौका नहीं देता है। मैंने कम से कम कुछ पकड़ लिया है और माइक्रोसॉफ्ट कंसोल डीबगर के साथ एक स्टैक ट्रेस प्राप्त करने में कामयाब रहा है, लेकिन मुझे नहीं पता कि यहां से क्या देखना है। यह मेरे प्रोग्राम के मुख्य कार्य को प्राप्त करने या मेरे किसी भी कोड को चलाने से पहले ntdll.dll के भीतर विचित्र रूप से असफल रहा प्रतीत होता है।ड्रेग किए गए 'एप्लिकेशन को शुरू करने में विफल रहा है' त्रुटि

C:\> cdb bugrepro 
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 
Copyright (c) Microsoft Corporation. All rights reserved. 

CommandLine: bugrepro.exe 
Symbol search path is: C:\SYMBOLS 
Executable search path is: 
ModLoad: 00400000 00447000 bugrepro.exe 
ModLoad: 7c900000 7c9af000 ntdll.dll 
ModLoad: 7c800000 7c8f6000 C:\WINDOWS\system32\kernel32.dll 
ModLoad: 10000000 1002a000 glut32.dll 
ModLoad: 5ed00000 5edcc000 C:\WINDOWS\system32\OPENGL32.dll 
ModLoad: 77c10000 77c68000 C:\WINDOWS\system32\msvcrt.dll 
ModLoad: 77dd0000 77e6b000 C:\WINDOWS\system32\ADVAPI32.dll 
ModLoad: 77e70000 77f02000 C:\WINDOWS\system32\RPCRT4.dll 
ModLoad: 77fe0000 77ff1000 C:\WINDOWS\system32\Secur32.dll 
ModLoad: 77f10000 77f59000 C:\WINDOWS\system32\GDI32.dll 
ModLoad: 7e410000 7e4a1000 C:\WINDOWS\system32\USER32.dll 
ModLoad: 68b20000 68b40000 C:\WINDOWS\system32\GLU32.dll 
ModLoad: 73760000 737ab000 C:\WINDOWS\system32\DDRAW.dll 
ModLoad: 73bc0000 73bc6000 C:\WINDOWS\system32\DCIMAN32.dll 
ModLoad: 76b40000 76b6d000 C:\WINDOWS\system32\WINMM.dll 
(64c.7b4): Unknown exception - code c0000022 (first chance) 
(64c.7b4): Unknown exception - code c0000022 (!!! second chance !!!) 
eax=0012fc54 ebx=00000000 ecx=0012fc80 edx=7c90e4f4 esi=7ffd8000 
edi=c0000022 
eip=7c96478e esp=0012fc54 ebp=0012fca4 iopl=0   nv up ei pl zr na pe nc 
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 
ntdll!RtlRaiseStatus+0x26: 
7c96478e c9    leave 
0:000> ~k 
ChildEBP RetAddr 
0012fca4 7c93f14e ntdll!RtlRaiseStatus+0x26 
0012fd1c 7c90e437 ntdll!_LdrpInitialize+0x241 
00000000 00000000 ntdll!KiUserApcDispatcher+0x7 
0:000> 

किसी को भी इस बारे में कोई सुझाव है कि इसे यहां से डीबग करने में कहां जाना है?

उत्तर

10

मॉरॉन के उत्तर के बाद, आपको Process Monitor चलाया जाना चाहिए।

यह टूल आपको बताएगा कि आपकी प्रक्रिया क्या करती है, और किस फाइल ने कोशिश की है (और कम से कम एक विफल होने के लिए) लोड करने के लिए, और त्रुटियां क्या हैं।

यह इससे अधिक करता है, और किसी भी प्रक्रिया समस्या निवारण के लिए, यह एक अद्भुत समय बचाने वाला है।

+2

यह उपकरण आखिरकार यह पहचानने में सक्षम था कि समस्या कहां थी - glew32.dll पर निष्पादन अनुमतियां अनुपलब्ध –

1

यदि मुझे सही याद है, तो अपवाद कोड c0000022 एक्सेस अस्वीकृत के लिए खड़ा है। आमतौर पर, इसका मतलब है कि विंडोज़ एक डोमेन नियंत्रक या ड्राइवर की तरह संसाधन को अवरुद्ध कर देता है।

आपने अपने आवेदन की प्रकृति निर्दिष्ट नहीं की है, लेकिन यह स्टैक डंप से स्पष्ट है कि यह 3 डी/ओपनजीएल उपकरणों से संबंधित है। शायद आपकी समस्या एक गलत कॉन्फ़िगर किए गए ड्राइवर या पुस्तकालय के साथ है। मैं एक और मशीन पर परीक्षण और/या अपने ड्राइवरों को फिर से स्थापित करने का सुझाव देता हूं।

+0

बिंगो! एक सिगविन कमांड 'chmod a + x * .dll' ने मेरे मामले में समस्या हल की। –

3

आमतौर पर "एप्लिकेशन प्रारंभ करने में विफल रहा है" त्रुटि डीएलएस से गुम आयात से संबंधित है; 0xC0000022 के साथ संयुक्त हो सकता है इसका मतलब यह हो सकता है कि आपके एप्लिकेशन द्वारा आवश्यक एक डीएलएल को एक्सेस अस्वीकृत त्रुटि के कारण लोड नहीं किया जा सकता है (शायद उपयोगकर्ता को उस फ़ाइल को खोलने/निष्पादित करने का अधिकार नहीं मिला है)।

+0

मैंने अब संकल्प देखा ... वाह, मेरी मानसिक डीबगिंग शक्तियां सही थीं! –

3

निर्भरता वॉकर के साथ चलने का प्रयास करें। http://dependencywalker.com/

यह निर्भरताओं का स्थिर विश्लेषण करता है, और यह किसी एप्लिकेशन के स्टार्टअप के माध्यम से भी पता लगा सकता है।

संबंधित मुद्दे