https://foro.gambas-es.org/viewtopic.php?f=1&t=5007
-----------------------------------
Shell
Lunes, 30 Noviembre 2015, 09:53

Cuando Un Ejecutable Gambas Falla
-----------------------------------
Hola!.

Estoy leyendo un articulo sobre  "vivir del software libre". Solo como información.
Y hay una parte de un articulo que cita:

[quote]
Fase 1. Help!!!!

En una primera fase, se publica una beta, y se piede a la comunidad que lo prueben, que reporten bugs, que contribuyan con módulos, comentarios, e incluso que corrijan el código.

Probar un software es complicado, pero si tenemos la ayuda de miles de usuarios… la cosa cambia.
[/quote]

Si damos a probar una aplicación que es para que lo prueben los usuario. En este caso ha cedido el código para que lo prueben y puedan modificar.
Como es lógico no todos los programadores son así. Pero,¿  cómo se puede testear algo que no tiene el código fuente. ?. 

Si, naturalmente  que se puede y la aplicación fallara donde exista el error. Nosotros que trabajamos y estudiamos un código, al ejecutar, si se produce un error
cuando estamos con el editor, nos devuelve a este y nos deja en la linea que se producido. 

¿ Y si es solo un ejecutable ?. ¿ Siguiendo los pasos del usuario ?
¿ Que información suele devolvernos cuando se produce un error ?. ¿ Linea del código ?. ¿ Tipo de error ?.
¿ Cómo y con que facilidad depura luego el programador un error reportado por un usuario cuando es un ejecutable ?.

El articulo completo de vivir del software libre  es este:

[url=http://juanmacias.net/2010/01/%C2%BFse-puede-vivir-del-software-libre/]¿ Se puede vivir del software libre ?

Saludos


-----------------------------------
Shell
Lunes, 30 Noviembre 2015, 10:13

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
Debe ser por la falta de costumbre de crear ejecutables.
He creado un ejemplo sencillo en el que pregunta la edad. Se producirá error si no se entra un entero.

El código es este:

 [img]http://foro.gambas-es.org/files/images/768/codigopediredad.png[/img] 

De esa forma podemos ver la linea de código. El testeo del código ejecutable fue de esta forma.

[quote]
Ingrese su edad 
er
Main.Main.8: #6: Type mismatch: wanted Integer, got String instead
Main.Main.8 
[/quote]

Ergo el error se produce en la linea 8 y el #6 es el número del error supongo.  :grin: 
Es un proyecto de consola.  Entonces la posibilidad es ejecutar siempre la aplicación desde la consola.
Y en el caso de formulario...gestión de errores.. Ale, me toca repaso de gestión de errores, es que no me aburro.

[code linenumbers=false syntax=gambas]
Catch
    Print "Se ha producido un error. Estos programadores. Tanta fiesta!"
[/code]

Pues si, debió ser cosa de despertarse por la mañana, todo desorientado.
Desde luego el articulo de vivir del software libre y en la manera que tienen que vivir los programadores de este software fue lo que me... :shock:  :roll: 

Saludos


-----------------------------------
shordi
Lunes, 30 Noviembre 2015, 10:39

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
Por otra parte, puedes añadir información al error y, eventualmente, mandarla por correo al desarrollador:
[code linenumbers=false syntax=gambas]
Catch
     message("Se produjo el siguiente error: " & Error.text & " - " & Error.where & " Se informará del error a los desarrolladores".)
     EnviarMail( Date(),Application.Name,Error.text,Error.where, User.name, cualquier_otro_parámetro_que_creamos_pertinente)
End
[/code]
Y en el módulo de funciones:
[code linenumbers=false syntax=gambas]
Public sub EnviarMail( fecha as date, programa as string, errortext, linea, Usuario, mas_cosas)

.....
.....

SendMail( etc. etc.)
.....
.....

end[/code]


-----------------------------------
jsbsan
Lunes, 30 Noviembre 2015, 10:48

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
Incluso puedes crear archivos .log donde guardes los pasos que sigue el usuario, y asi también mandarlo....y nunca viene mal una captura de pantalla.

También yo algunas veces he pedido que me hicieran un video de como estaban usando el programa o una determinada opción, y asi he podido deducir lo que estaba pasando.


-----------------------------------
Shell
Lunes, 30 Noviembre 2015, 10:57

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
¿ Suelen ser normalmente las propiedades Error.Text y Error.Where las habituales que se usan ?

Interesante el código. :-)

Estaba probando un ejemplo parecido pero con formularios..me ha costado recordar cosas, como no uso formularios.

(Pongo una captura, no puedo copiar el número de las lineas de código ).  :roll: 

 [img]http://foro.gambas-es.org/files/images/768/ejemploconventana.png[/img]

Al principio creía que la clase error, podía mostrar una ventana. Tuve que hacerlo con la clase Message y aplicar luego la clase Error.

 [img]http://foro.gambas-es.org/files/images/768/dondesehaproducido.png[/img]

Lógicamente en la linea donde ha convertido el texto a entero.

Julio:

La idea del vídeo no es mala. Siempre que sea pequeño. :-D
Tiene que ser enorme el archivo log. Claro que puede ser una opción a activar por el usuario en la aplicación para depuración en caso de que lo desee.

Saludos


-----------------------------------
Shell
Lunes, 30 Noviembre 2015, 11:07

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
Ah, si, quería comentar.

En este caso del ejemplo es solo un procedimiento.  Con lo que al mostrarse el error, se abre la ventana, la cerramos y luego puedo
volver a toquetear el Textbox y en vez de entrar un texto, volver a entrar un número. 

Quiero decir que no es un error que la aplicación se cierra y te deja tirado. 
Casos más graves habrá. Que se cuelgue la aplicación o que no pueda continuar, etc,etc..

Saludos


-----------------------------------
shordi
Lunes, 30 Noviembre 2015, 11:12

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
[quote]Quiero decir que no es un error que la aplicación se cierra y te deja tirado.
Casos más graves habrá. Que se cuelgue la aplicación o que no pueda continuar, etc,etc..[/quote]
Si te acostumbras a usar Catch en todos tus procedimientos (un copia y pega estándar) ningún error te deja tirado.
Por otra parte los errores "menores" como en el ejemplo que has puesto, no deben ser ignorados y también merecen un mensaje al programador.
Ya conoces el principio de expansión de la mierda, pues con los errores, por leves que sean pasa lo mismo.  :mryellow:  :mryellow:  :mryellow:


-----------------------------------
Shell
Lunes, 30 Noviembre 2015, 13:34

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
[quote]
Ya conoces el principio de expansión de la mierda, pues con los errores, por leves que sean pasa lo mismo
[/quote]

 :lol:  :lol: 

Es una pena que no se pueda usar un código común y llamarlo cuando se produce el error para evitar tanto código repetido. 
Reducirlo puede. Seguro que en todos los lenguajes es lo mismo. Si encuentro algo distinto en Python, lo comento, ya que hasta ahora
esa forma de hacerlo tambien es parecido.

Si lee esto Vuott. A ver que nos comenta del modo de depuración de errores en C. Siendo un compilador posiblemente sea
más complicado.

A propósito Jorge. Todos estos pequeños códigos los tienes que tener clasificados. Es que para acordarte de todo.
A mi se me olvida con el tiempo y del uso, hasta como se abre un archivo. No te digo na, cuando aprendes dos lenguajes.. :mryellow: 
No es raro el día que he intentado usar un método de arrays de Gambas en Python. Pero en el fondo estos dos
lenguajes tienen cosas muy parecidas, no iguales.

Saludos


-----------------------------------
shordi
Lunes, 30 Noviembre 2015, 18:36

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
[quote]A mi se me olvida con el tiempo [/quote]
No te digo ná...  :shock: Yo sólo programo en Gambas y, de vez en cuando, hago incursiones en php & cía o Shell Script. 
Forgoten total. El otro día pené lo indecible con un if[ cosa=cosa].... fi... hasta que lo miré en las ayudas, claro.

 :mad:  :mad:


-----------------------------------
tercoIDE
Martes, 01 Diciembre 2015, 13:25

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
en C tienes que compilar si o si, entonces hay errores que hacen que ni se cree el ejecutable, ademas los compiladores suelen ser exigentes y verifican mucho

lo malo es que en general, muchos errores generan un crash cuando se involucra la memoria, porque C, a efectos de ser veloz, no chequea macanas en run-time

creo

 :mrgreen:


-----------------------------------
Shell
Miercoles, 02 Diciembre 2015, 00:40

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
tercoIDE:

Si no se genera el ejecutable por errores no es mala idea. 
Pero eso de que de pueda generar un crash o un error críptico, debe ser jodido para el programador de C,
encontrar el error. Acostumbrados estarán.

Saludos


-----------------------------------
jsbsan
Miercoles, 02 Diciembre 2015, 08:13

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
Shell:

[quote]Pero eso de que de pueda generar un crash o un error críptico, debe ser jodido para el programador de C,
encontrar el error. Acostumbrados estarán.[/quote]
Un error muy típico que se produce es cuando se supera el tamaño de un array al añadir datos un array.... en gambas te saldría un error en tiempo de ejecución pero en C se "fastidia" o cuelga  el programa, y muchas veces sin avisar que ha pasado.... 

Hay mucha gente que quiere empezar por "C" porque es el padre de muchos lenguajes... pero no saben en el follón que se meten...


-----------------------------------
Shell
Miercoles, 02 Diciembre 2015, 10:02

Re: Cuando Un Ejecutable Gambas Falla
-----------------------------------
Hola Julio.

[quote]
Hay mucha gente que quiere empezar por "C" porque es el padre de muchos lenguajes... pero no saben en el follón que se meten...
[/quote]

Bueno, cada lenguaje tiene sus formas y maneras.  :roll: 
Los ejemplos que he estudiado en C eran sencillos y no llegue a profundizar demasiado en este lenguaje.
A mi me gustaba. Mas que Java, siempre lo diré.

He encontrado un enlace donde muestra como resolver la depuración de errores en C.
Incluso cuando se produce fallos de segmentación.

[url=http://crysol.org/es/node/267]Depurar un programa en C

Efectividad, ni idea. No he llegado a tanto. 

Saludos


