Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Bug en el depurador C++Builder 2007 (https://www.clubdelphi.com/foros/showthread.php?t=64037)

alvarovinu 13-03-2009 13:20:32

Bug en el depurador C++Builder 2007
 
La ejecución es correcta, pero el depurador no puede inspeccionar el elemento TDsg dsg en la siguiente situación:

#include <vcl.h>

// Incomplete definition
class TDsg;

class GVE_Graphic
{
private:
TDsg *dsg;

};
/* Error appears with any of these operators defined */
int operator==( GVE_Graphic &t1, GVE_Graphic &t2 )) { return(0 ); }
//int operator!=( GVE_Graphic &t1, GVE_Graphic &t2 ) { return(0 ); }
//int operator>=( GVE_Graphic &t1, GVE_Graphic &t2 ) { return( 0 ); }
//int operator<=( GVE_Graphic &t1, GVE_Graphic &t2 ) { return( 0 ); }
//int operator> ( GVE_Graphic &t1, GVE_Graphic &t2 ) { return( 0 ); }
//int operator< ( GVE_Graphic &t1, GVE_Graphic &t2 ) { return( 0 ); }

class TDsg
{
public:
int x;
TDsg() { x = 0; };
};

int main(int argc, char* argv[])
{
int a = 0;
TDsg dsg;
a = 1; //Breakpoint. Aquí ya no se puede inspeccionar dsg
return( 0 );
}


Al comentar el atributo (con el mismo nombre pero sin relación) de GVE_Graphic, TDsg dsg, el error desaparece y si permite inspeccionarlo (con el valor dado por la constructora x=0).

Para corroborar el bug, he depurado este mismo código con Visual C++(2008) y no me da problemas al realizar la inspección.

Alguna sugerencia?. Se ha reportado ya este error?. Como se evita?.

Muchas gracias y un saludo.

escafandra 13-03-2009 13:36:59

No termono de entender tu error.

Cita:

Empezado por alvarovinu (Mensaje 341337)

/* Error appears with any of these operators defined */
int operator==( GVE_Graphic &t1, GVE_Graphic &t2 )) { return(0 ); }

Tienes un error de sintaxis, sobra un cierre de paréntesis:

Código:

    /* Error appears with any of these operators defined  */
    int operator==( GVE_Graphic &t1, GVE_Graphic &t2 ) { return(0 ); }

Claro, que ese error evita que compile.
Lo he compilado en Builder 5 y el debugger hace bien su trabajo.

No tengo Builder 2007, mas no te puedo decir.

Saludos.

alvarovinu 13-03-2009 15:55:13

Muchas gracias Escafandra.

En cuanto al error de sintaxis tienes toda la razón. Se me ha colado.

El problema es que al debuggear, poniendo un brekpoint en a = 1;

Cita:

Empezado por alvarovinu (Mensaje 341337)
int main(int argc, char* argv[])
{
int a = 0;
TDsg dsg;
a = 1; //Breakpoint. Aquí ya no se puede inspeccionar dsg
return( 0 );
}

No me permite inspeccionar el elemento dsg, sin ninguna razón aparente.

En cuanto al fallo del depurador (ejecutar, ejecuta bien), es algo bastante extraño. En el Builder 2007 a mi no me inspecciona nunca. He probado en CBuilder6 y tampoco me iba. Probamos en otro ordenador e iba y venía de forma intermitente.

No sé que pensar.......En cualquier caso muchas gracias Escafandra.

Un saludo!.

escafandra 13-03-2009 16:22:13

Ahora me acuerdo de haber leido un problema con el debugger del Builder 2007.

Determinados errores del debugger del BCB 2007 aparecen si no se ha instalado el Service Pack 3 de Builder.

Visita la web del fabricante, Embarcadero Technologies, donde puedes descargar de manera "gratuita" el Service Pack 3 (debes ser usuario registrado). Corrige los fallos y obtienes mejoras en él mismo software.

Saludos.

alvarovinu 16-03-2009 09:15:10

Hola Escafandra.

Ya está puesta la actualización (Update 3 de Diciembre 2007 y hotfix posteriores) y sigue igual. Muchas gracias por tu ayuda Escafandra.

Un saludo!.


La franja horaria es GMT +2. Ahora son las 17:34:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi