Pregunta

Tengo un viejo C ++ componente COM que tiene que estar en formato de Visual Studio 6.0. No puedo por la vida de a averiguar cómo depurar el código en el componente COM real.

Soy capaz de construir en modo de depuración, añadir puntos de interrupción y adjuntarlo al proceso dllhost.exe, pero el entorno de Visual Studio sólo me va a mostrar el desmontaje de dllhost.exe y no mi código fuente (También doesn 't parar en los puntos de interrupción).

Recuerdo que hace un tiempo había una manera de hacer que IIS (o inetinfo.exe) target de la acción de depuración (es decir, cuando Visual Studio 6.0 le pide el ejecutable para lanzar su DLL) e IIS se ejecutaría en un modo de proceso individual. Hubo una clave de registro que tenía que cambiar, pero google no ha ayudado.

¿Fue útil?

Solución

Si se trata de un componente COM basado en Visual Basic 6, se puede abrir el proyecto en VB6 y ejecutarlo (un proyecto DLL no se puede ejecutar). Las propiedades del proyecto tiene alguna opción mediante la cual se le puede pedir a correr para que se ejecute y registra a sí mismo.

Ahora, trata de golpear la página ASP, lo que hace una llamada al componente COM. se verán afectados los puntos de corte establecidos en los archivos de clase, ya que las llamadas se realizan desde la página ASP.

Otros consejos

En primer lugar, archivo PDB (producido durante la compilación) debe estar en el mismo directorio con el archivo DLL (se puede configurar en las propiedades del proyecto).

Si el objeto no utiliza algunas funciones ASP-específica (solicitud, respuesta, objetos Session) puede copiar su código invocación al archivo .vbs y depurar mediante el ajuste de cscript.exe your.vbs como programa de destino de depuración.

Hay explicaciones ( por ejemplo ) cómo depurar DLL ISAPI - que son aplicables a su objeto COM también (desde el punto de vista de OS / depurador ambos son DLL cargadas en proceso de IIS). Ponga atención a su versión de IIS y en materia de entrada / salida de proceso.

Y, por último, si nada otra ayuda, se puede añadir un poco de registro a través de OutputDebugString función y verlo en DebugView programa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top