9/10/2009 18:00 El Bruno

[VS2008] Depurando Visual Studio con el propio Visual Studio (depurarse a uno mismo, es una actividad de autorecursividad)

 

 

Buenas,

dicen que “si duermes con niños, amaneces mojado”; y que “si juegas con fuego, te quemas”; asi que le dejo a algún iluminado la tarea de terminar la frase: “si depuras Visual Studio  con Visual Studio, …” Esta tarea que no es de las más comunes, suele ser necesaria cuando le metes mano a extensiones de Visual Studio, o cuando VS comienza a fallar y no sabes porqué; asi que como me lo se de memoria pero siempre me olvido voy a dejar los pasos necesarios para depurar VS, como un recordatorio de lo feliz que puede ser la vida.

He aquí el paso a paso

Tutorial

1. Lo primero que necesitamos es tener la instancia de Visual Studio (VS1) que queremos depurar y abrir una nueva instancia de Visual Studio (VS2) para depurar a VS1.

2. Luego desde VS2 nos “attachamos” al proceso devenv.exe (VS1) desde el menú Debug//Attach to Process. Dato, si no has abierto un proyecto el menú es Tools//Attach to Process

image

3. Una vez en proceso veremos un mensaje que nos dice

Debugging information for ‘devenv.exe’ cannot be found or does not match. Symbols not loaded. Do you want to continue debugging?”.

Debemos seguir, es decir presionar [Yes]; y ya estaremos trabajando sobre el proceso de VS1

4. En la instancia a depurar, podemos ahora hacer aquello que queremos probar –> cargar un proyecto, hacer click en un botón de un AddIn, etc.

5. En la ventana de Threads puedes ver que hay varios trabajando y esperando; lamentablemente el mensaje que vemos en los mismos es algo similar a:

ntdll.dll!7c90eb94()  [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]

ntdll.dll!7c90e9ab()

kernel32.dll!7c8094e2()

> msvcr90.dll!_onexit_nolock(int (void)* func=0x0072006f) Line 157 + 0x6 bytes C

6. Vamos, que seguro que RFOG o Carlos entienden esta semántica, pero para los que somos mas tontacos lo mejor es utilizar los símbolos publicos de MS para Visual Studio y tirar por allí.

7. Para esto vamos al menú Tools->Options->Debug->Symbols y configuramos el server para que apunte a http://msdl.microsoft.com/download/symbols y un directorio de descarga para los mismos. Usualmente se suele utilizar la raíz del C:, al estilo [C:\Symbols]

image

8. Disclaimer con respecto al paso anterior: en este momento para cada acción que se depure, se intentará bajar los datos propios de depuración del mismo. Este proceso puede y suele ser muy lento con lo que a no desesperarse.

9. Pues bien, ahora los mensajes de información que vemos en los threads son un poco más humanos, con lo que podremos ver algo al estilo

ntdll.dll!_KiFastSystemCallRet@0()

user32.dll!_NtUserKillTimer@8() + 0xc bytes

msenv.dll!CMsoCMHandler::FPushMessageLoop() + 0x36 bytes

msenv.dll!SCM::FPushMessageLoop() + 0x4f bytes

msenv.dll!SCM_MsoCompMgr::FPushMessageLoop() + 0x28 bytes

msenv.dll!CMsoComponent::PushMsgLoop() + 0x28 bytes

msenv.dll!VStudioMainLogged() + 0x19b bytes

msenv.dll!_VStudioMain() + 0x7d bytes

devenv.exe!util_CallVsMain() + 0xd8 bytes

devenv.exe!CDevEnvAppId::Run() + 0x5cb bytes

devenv.exe!_WinMain@16() + 0x60 bytes

devenv.exe!License::GetPID() - 0x4cf9 bytes

kernel32.dll!_BaseProcessStart@4() + 0x23 bytes

A partir de aquí ya no me hago responsable y cada uno debe velar por su propia seguridad :D

 

Saludos @ Bilbao’s Airport

El Bruno

Archivado en: ,,
Comparte este post:

# re: [VS2008] Depurando Visual Studio con el propio Visual Studio (depurarse a uno mismo, es una actividad de autorecursividad)

Friday, October 09, 2009 6:34 PM by Ernesto

Para entender la recursividad primero hay que entender la recursividad ;)

# re: [VS2008] Depurando Visual Studio con el propio Visual Studio (depurarse a uno mismo, es una actividad de autorecursividad)

Friday, October 09, 2009 7:59 PM by Rafael Ontivero

Mmmm... ¡Vaya, no sabía yo que estaban disponibles los símbolos para Visual Studio... La próxima vez que me pete, seguro que se gana una entrada en el blog...

Lo jodío ahora es que me pete, que desde el SP1 no lo ha hecho, o no recuerdo que lo haya hecho...

Aps, asias por citarme, je je.