compilando en debug modo

Iniciado por laephy, 20 Septiembre 2011, 23:12 PM

0 Miembros y 2 Visitantes están viendo este tema.

laephy

Hola,

no se si este tema corresponde aquí o no. De todas formas aquí os dejo mi pregunta.

Me han pasado un programa realizado en vc++ 6.0 y en el cual la compilacion tanto en debug modo como en release modo funcionaba. Ahora lo he intentado yo compilar con el vs 2005. No tengo ningún problema a la hora de "build" el ejecutable, pero si intento hacer un debug me da el siguiente error:

CitarApplication error: The instruction at "0x7c910c8e" referenced memory at "0x68636552". The memory could not be "read".

Lo mas curioso de todo, que sin embargo si puedo hacer el debug en modo release sin problemas.

Alguien me podría explicar porque ocurre este error? Como es posible que haga el debug en modo release y no en modo debug? A que puede deberse?

Muchas gracias de antemano.

Laura

Eternal Idol

Dificil de saber con esos pocos datos, la version de depuracion contiene algunas trampas para detectar problemas pero la direccion parece ser de una DLL del sistema ... depuralo con WinDbg y simbolos.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

laephy

¿Que datos necesitas saber para poder ayudarme?

No conozco el programa WinDbg, ¿dónde puedo conseguirlo y cómo funciona?

Eternal Idol

Y un minidump por ejemplo pero lo ideal es que lo hagas vos mismo con el WinDbg. Lo podes bajar con el SDK de Windows, es el paquete "Debugging tools for Windows". Tambien te recomiendo instalar el "Application Verifier".
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

laephy

Al final me he instalado el Windbg y después de buscar un poco de información en internet sobre como funcionaba he intentado depurar mi programa. Pero la verdad que no entiendo muy bien, lo que aparece en pantalla.

Me pueden explicar como puedo solucionar el Access violation - code c0000005 (first chance) que aparece al final de la pantalla en el Windbg.

CitarCommandLine: "C:\PRESSURE\pressure.exe"
Symbol search path is: SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
Executable search path is: C:\PRESSURE\Debug
ModLoad: 00400000 0044b000   pressure.exe
ModLoad: 7c900000 7c9b2000   ntdll.dll
AVRF: pressure.exe: pid 0x9F0: flags 0x80443027: application verifier enabled
ModLoad: 5ad10000 5ad59000   C:\WINNT\System32\verifier.dll
ModLoad: 10000000 1002b000   C:\WINNT\System32\vrfcore.dll
ModLoad: 00370000 003c8000   C:\WINNT\System32\vfbasics.dll
ModLoad: 7c800000 7c8f6000   C:\WINNT\system32\kernel32.dll
AVRF: verifier.dll provider initialized for pressure.exe with flags 0x80443027
ModLoad: 781d0000 78416000   C:\WINNT\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471\MFC80D.DLL
ModLoad: 10200000 10320000   C:\WINNT\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\MSVCR80D.dll
ModLoad: 77c10000 77c68000   C:\WINNT\system32\msvcrt.dll
ModLoad: 77f10000 77f59000   C:\WINNT\system32\GDI32.dll
ModLoad: 7e410000 7e4a1000   C:\WINNT\system32\USER32.dll
ModLoad: 77f60000 77fd6000   C:\WINNT\system32\SHLWAPI.dll
ModLoad: 77dd0000 77e6b000   C:\WINNT\system32\ADVAPI32.dll
ModLoad: 77e70000 77f03000   C:\WINNT\system32\RPCRT4.dll
ModLoad: 77fe0000 77ff1000   C:\WINNT\system32\Secur32.dll
ModLoad: 77120000 771ab000   C:\WINNT\system32\OLEAUT32.dll
ModLoad: 774e0000 7761e000   C:\WINNT\system32\ole32.dll
ModLoad: 10480000 1057c000   C:\WINNT\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\MSVCP80D.dll
(9f0.e68): Break instruction exception - code 80000003 (first chance)
eax=01456fec ebx=7ffd4000 ecx=00000005 edx=00000020 esi=0145afb0 edi=01456fec
eip=7c90120e esp=0012fb20 ebp=0012fc94 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
ntdll!DbgBreakPoint:
7c90120e cc              int     3
0:000> g
ModLoad: 76390000 763ad000   C:\WINNT\system32\IMM32.DLL
ModLoad: 5d360000 5d36e000   C:\WINNT\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_0ccc058c\MFC80ENU.DLL
ModLoad: 7c9c0000 7d1d7000   C:\WINNT\system32\SHELL32.dll
ModLoad: 773d0000 774d3000   C:\WINNT\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
ModLoad: 5d090000 5d12a000   C:\WINNT\system32\comctl32.dll
ModLoad: 5ad70000 5ada8000   C:\WINNT\system32\uxtheme.dll
ModLoad: 74720000 7476c000   C:\WINNT\system32\MSCTF.dll
ModLoad: 77c00000 77c08000   C:\WINNT\system32\version.dll
ModLoad: 755c0000 755ee000   C:\WINNT\system32\msctfime.ime
(9f0.e68): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0000004e ebx=7ffd4000 ecx=00000000 edx=03060000 esi=0012f81c edi=0012f814
eip=102a3aa0 esp=0012f550 ebp=0012f79c iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
MSVCR80D!_input_l+0xa50:
102a3aa0 8802            mov     byte ptr [edx],al          ds:0023:03060000=??

Gracias de nuevo por la ayuda.

Laura

Eternal Idol

MSVCR80D es la DLL de la Run Time Library de VC++ (version debug).

Con el comando kb ves la pila de llamadas. ¿Estara scanf en la misma?
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón