Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #32  
Antiguo 11-05-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Bueno, no me leí todo pero quiero hacer una aclaración que quizá dé luz sobre por qué no funciona el depurador GDB con los programas FPC.

Como algunos ya sabéis, he estado los últimos años currándome la biblioteca Allegro.pas, la cual es una envolvente para poder utilizar Allegro (una biblioteca escrita en C) con Free Pascal (y en el futuro espero que también Delphi, pero no viene al caso). La cosa es que había cosas que no funcionaban a pesar de no existir una razón. Es decir, que coges un programa C que funciona perfectamente, haces una traducción literal a Pascal y falla: bien salta una excepción de sistema (no de Pascal), bien el resultado obtenido no es el esperado (por ejemplo, te cambia los colores).

Pues bien: investigando, uno de los desarrolladores de Allegro descubrió por casualidad que una excepción era lanzada en cierta línea de la biblioteca escrita en C, al hacer un cálculo. Al cambiar el tipo de una de las variables implicadas de 32 bit a 64 bit resultó que el programa en Pascal funcionaba perfectamente. ¿Por qué? Pues simple: Free Pascal activa una serie de excepciones y límites del microprocesador Intel que GCC (el compilador C que uso yo y los desarrolladores de Allegro) no activa, por lo que el programa C ignora el error pero el Pascal no, ya que saltaba la excepción.

Si ahora vamos al depurador vemos que está programado por los mismos que crearon los compiladores GCC. No sé cómo funciona algo a tan bajo nivel, pero es posible que alguna de las excepciones activadas por FPC entren en conflicto con los mecanismos que utiliza GCC para hacer el seguimiento, ya que supongo utilizará esas excepciones para monitorizar los eventos de depuración, puesto que GCC no las activa y están libres.

Como digo, no sé cómo trabajan las cosas a tan bajo nivel, así que no tengo ni idea de si se puede comprobar y encontrar una solución, que seguramente pase por modificar FPC o GDB. No sé si habría que comentarlo con los desarrolladores de FPC, ya que se supone que deberían estar ya al tanto de esto, ¿no? En cualquier caso siempre puedo dejarlo caer en la lista de correos en la que estoy apuntado y donde muchas veces se discuten estos temas de diseño del compilador.

Última edición por Ñuño Martínez fecha: 11-05-2010 a las 11:36:49.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con debugger de delphi BlackDaemon Varios 1 02-04-2008 17:58:11
Problema Lazarus Io Lazarus, FreePascal, Kylix, etc. 5 01-06-2007 22:35:52
Problema con TDBImage en lazarus Robert01 Lazarus, FreePascal, Kylix, etc. 0 10-02-2007 03:29:17
[Lazarus] GTK+-devel en SUSE. problema instalar lazarus de esa libreria. sakuragi Lazarus, FreePascal, Kylix, etc. 3 28-09-2006 03:31:09
Problema rraro con lazarus DwLinuxero Lazarus, FreePascal, Kylix, etc. 3 10-11-2005 15:12:32


La franja horaria es GMT +2. Ahora son las 09:27:06.


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