2009-02-19 20 views
8

Estoy intentando utilizar WinDBG u otro depurador para depurar una aplicación de Windows CodeGear Delphi 2007 en una máquina remota. No he podido producir archivos de símbolos para WinDBG.Depuración de aplicación Delphi en entorno de no desarrollo

¿Hay alguna manera de usar WinDBG u otro depurador para depurar aplicaciones Delphi en un sistema que no incluye el IDE?

Edit1

El depurador remoto no es una opción aquí. Puedo acceder de forma remota a la PC del usuario final, pero no puedo usar el depurador remoto debido a las restricciones del firewall.

Edit2

soy capaz de distancia en la máquina, pero no se puede conectar el depurador remoto CodeGear debido a las restricciones de firewall.

Respuesta

0

Gracias a todos por las excelentes sugerencias y productos interesantes.

Para solucionar este problema específico, la "mejor" manera que encontré utiliza el OutputDebugString situado en el espacio de nombresde Windows. Esto, junto con Debug View from Sysinternals, me permitirá recopilar información de depuración y ordenarla rápidamente.

Si decide usar este método, asegúrese de que todo esté envuelto en formato ANSI. IE:

OutputDebugString(PAnsiChar(string1 + string2)); 

Esto asegura que string1 y string2 se combinan y luego se convierten en caracteres ANSI.

Probablemente debería haber comenzado a descargar texto a un archivo por algo rápido y sucio, pero esto permitirá que una versión sin errores emita mensajes de depuración.

+0

Quiero dejar esta pregunta abierta por unos días más para ver si no podemos obtener una mejor respuesta que esta para conectar realmente el depurador. –

5

¿Qué tal el depurador remoto? Cree su aplicación con símbolos de depuración remota y depure desde su máquina de desarrollo a través de la red.

+0

Me gustaría ser capaz de hacer esto, pero lamentablemente la otra máquina está en una red completamente diferente con las restricciones de firewall. –

+0

He podido acceder de forma remota a la PC, pero no puedo conectar el Depurador remoto a través de TCP \ IP. Estaba buscando algo similar a WinDBG para solucionar problemas de la aplicación a través de la GUI, ya que no puedo conectar directamente el depurador. –

+0

Si no puede conectarse de forma remota, me gusta la idea de X-Ray. loco excepto rocas. –

1

En Delphi puede utilizar Ejecutar -> Adjuntar a proceso, seleccionar la máquina remota y seleccionar el proceso que desea depurar.

+0

... suponiendo que la máquina de destino ejecuta el depurador remoto. – dummzeuch

+0

Nunca he usado este "procedimiento", así que no pensé en eso. Gracias por haberlo aclarado, al menos "he" aprendido algo. –

5

en su lugar, confío en MadExcept stack tracing y algunas características de registro. mi aplicación se distribuye en todo el mundo & esto ha sido suficiente.

+0

¡Miré este producto un poco más y estoy muy impresionado con lo que puede hacer! Lamentablemente, la aplicación no se bloquea. Necesito una forma de volcar la memoria o recorrer la aplicación para detectar un error más lógico. ¡Gracias por el interesante producto! –

4

Usted puede intentar generar un archivo de mapa y luego convertirlo a un archivo DBG usando map2dbg de http://code.google.com/p/map2dbg/

A continuación, puede cargar el archivo DBG en WinDbg.

Descargo de responsabilidad: me enfrenté a un problema similar, pero logré realizar la depuración remota y no tuve que hacer todo esto. Entonces no estoy seguro de que esto funcione. Pero si lo intenta, háganos saber si funciona.

+0

Ayer busqué esto un poco y descubrí que todavía no es compatible con Delphi. Si tiene más información, sería perfecto. –

2

Me temo que esto es uno más de los "No tengo una respuesta real" respuestas, pero fuerza sólo ayuda ...

¿Ha considerado la adición de registro de su aplicación? He oído grandes cosas sobre SmartInspect. Con él, puede registrar todo tipo de información, incluidos los rastros de pila y "relojes" (variables).

Otro producto de registro para Delphi es EurekaLog.

+0

Puedo confirmar que SmartInspect es una solución muy confiable. De acuerdo, no se puede depurar de forma simple con él, el registro es muy bueno y avanzado. –

0

http://sourceforge.net/projects/tds2dbg/ se puede utilizar para convertir archivos de depuración TDS de Delphi a archivos DBG. Esto proporciona información básica sobre los símbolos: funciones, clases, unidades, pero no variables. Suficiente para una cantidad de llamadas razonable, y con un poco de conocimiento, suficiente para depurar aplicaciones de Delphi en vivo y con volcados.

He escrito sobre algunas de las experiencias Delphi + WINDBG en mi blog: https://marc.durdin.net/2015/11/windbg-and-delphi-a-collection-of-posts/

Cuestiones relacionadas