[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Ayuda] compilacion gcc



No creo que tenga que ver el X pues a mi si me marca el segmentation
fault...en dos maquinas. Aunque asombrosamente pude replicar el
comportamiento que dices en las maquinas de la escuela.

Mientras encontramos el problema, espero que este correo te sirva de
consuelo :D.

Por ultimo, ¿que gcc estas usando?


Saludos
Jorge L. Rivas
www.xiniom.com



On Fri, 2003-10-10 at 11:51, Manuel Morales wrote:
> bueno, alguien me puede decir porque? pero estando en
> una terminal del X si corre, y cuando estoy en una
> sesion remota(ej. ssh), no se ejecuta, que tiene que
> ver el entorno X aqui....
> 
> las matrices son muy grandes pues es un programa para
> obtener medidas de tiempo de corrida
> 
>   tareas de la escuela ya saben!...
> 
> 
> --- "Jorge L. Rivas" <jorge_lopez en xiniom com> wrote:
> > Directo al grano: Tus arreglos son
> > Gigaaaaaaaaaaaaaaaantes :-o
> > 
> > --> Explicación:
> > 
> > 
> > C maneja 4 clases de almacenamiento para las
> > variables entre ellas auto
> > y static que definen la duración del almacenamiento
> > (cuanto tiempo
> > existe en memoria). De forma llana, cuando una
> > variable es auto (como
> > tus arreglos ya que auto es el default) se dice que
> > tienen una
> > persistencia automática, es decir, se asigna
> > almacenamiento cada vez que
> > son utilizadas. Cuando las variables son de
> > persistencia estática
> > (static), el almacenamiento se asigna al inicio del
> > programa y se
> > mantienen así hasta que termina la ejecución.
> > 
> > Cuando utilizas variables automáticas enormes es
> > común que C te mande un
> > segmentation fault ya que es incapaz de "crearlas“
> > y "destruirlas"
> > continuamente. 
> > 
> > --> Cosas interesantes que observar:
> > 
> > Pasa lo mismo con un solo arreglo de tamaño
> > equivalente a tus tres
> > arreglos (por ejemplo float arreglo[3000000])
> > 
> > 
> > --> Soluciones
> > 
> > 1. Usar apuntadores (solución recomenda): digo, a
> > pesar de que el código
> > es trivial, es recomendable usar apuntadores y
> > asignar la memoria de
> > manera dinámica.
> > 
> > 2. Declarar los arreglos como static float a[n][m]
> > 
> > 3. Declarar las variables fuera del main (como
> > globales que por default
> > son static) aunque en lo particular no me gustan las
> > variables globales.
> >   
> > 
> > Saludos 
> > Jorge L. Rivas
> > www.xiniom.com
> > 
> > 
> > 
> > On Thu, 2003-10-09 at 18:29, Manuel Morales wrote:
> > > El programa es el siguiente:
> > > 
> > > 
> > > #define n 1000
> > > #define m 1000
> > > 
> > > int main(void)
> > > {
> > > float a[n][m],b[n][m],c[n][m];
> > > int i,j,k;
> > > 
> > > for(i=0;i<n;i++)
> > >         for(j=0;j<m;j++)
> > >         {
> > >                 a[i][j]=10;
> > >                 b[i][j]=10;
> > >                 c[i][j]=0;
> > >         }
> > > 
> > > for(i=0;i<n;i++)
> > >         for(j=0;j<n;j++)
> > >                 for(k=0;k<m;k++)
> > >                         c[i][j]+=a[i][k]*b[k][j];
> > > 
> > > 
> > > printf ("bueno este termino");
> > > return 0;
> > > }
> > > 
> > > y gdb da la siguente salida:
> > > 
> > > This GDB was configured as i386-redhat-linux...
> > > (gdb) r
> > > Starting program:
> > /home/usuarios/bern1629/bin/matriz
> > > 
> > > Program received signal SIGSEGV, Segmentation
> > fault.
> > > main () at matriz.c:9
> > > 9       for(i=0;i<n;i++)
> > > 
> > > 
> > > bueno mientras toy checando docs....gracias por la
> > > ayuda...
> > > 
> > > bye
> > > 
> > > 
> > > --- Daniel Guerrero <daniel en danguer com> wrote:
> > > > 
> > > > El Miércoles, 8 octubre, 2003, a las 09:36 PM,
> > > > Arturo Espinosa-Aldama 
> > > > escribió:
> > > > 
> > > > >
> > > > >> From: Manuel Morales <unberam_info en yahoo com>
> > > > >> To: linux_org_mx ayuda <ayuda en linux org mx>
> > > > >> Subject: [Ayuda] compilacion gcc
> > > > >> Date: Wed, 8 Oct 2003 16:21:10 -0700 (PDT)
> > > > >>
> > > > >> ya se que para algunos lo que voy a preguntar
> > es
> > > > >> sencillo:
> > > > >>
> > > > >> acabo de compilar un programa asi:
> > > > >>
> > > > >> gcc -o matriz matris.c
> > > > >>
> > > > >> ok crea el ejecutable, y cuando lo ejecuto en
> > una
> > > > >> terminal dentro del X el programa corre,
> > cuento
> > > > lo
> > > > >> ejecuto desde una consola, u otra sesion
> > telnet o
> > > > ssh
> > > > >> manda el siguiente error:
> > > > >>
> > > > >> Segmentation fault
> > > > >>
> > > > >> como le hago, necesito correrlo desde telnet
> > o
> > > > sesion
> > > > >> ssh?
> > > > >
> > > > > Muy interesante, especialmente porque parece
> > que
> > > > no usas ncurses ni 
> > > > > nada por el estilo. Compilalo asi:
> > > > >
> > > > > gcc -g -o matriz matris.c
> > > > >
> > > > > Y luego dale
> > > > >
> > > > > gdb matriz
> > > > >
> > > > > en la linea de gdb, le das r y cuando se
> > caiga, le
> > > > pones el comando 
> > > > > where y nos mandas el backtrace, no?
> > > > >
> > > > > gdb es el debugger de la suite GNU. info gdb
> > para
> > > > saber mas.
> > > > >
> > > > > Saludos,
> > > > > Arturo
> > > > >
> > > > 
> > > > Hola, seguramente estás utilizando acceso a
> > memoria
> > > > de mala forma y lo 
> > > > más raro es que mientras utilizar un apuntador
> > sin
> > > > asignar puede 
> > > > "funcionar" en una máquina, en otra no; y peor
> > aún
> > > > da un comportamiento 
> > > > de "a veces si y a veces no" (o "en algunas
> > partes
> > > > si, en otras no" 
> > > > =P), pasa mucho con cadenas; lo mejor que puedes
> > > > hacer es como ya dijo 
> > > > Arturo, darle al gdb y enviar todos los datos a
> > la
> > > > lista.
> > > > 
> > > > Claro si puedes, envia el código también =).
> > > > 
> > > > Saludos!
> > > > _______________________________________________
> > > > Ayuda mailing list
> > > > Ayuda en linux org mx
> > > > Para salir de la lista:
> > > http://mail.linux.org.mx/mailman/listinfo/ayuda/
> > > 
> > > 
> > > __________________________________
> > > Do you Yahoo!?
> > > The New Yahoo! Shopping - with improved product
> > search
> > > http://shopping.yahoo.com
> > > _______________________________________________
> > 
> === message truncated ===
> 
> 
> __________________________________
> Do you Yahoo!?
> The New Yahoo! Shopping - with improved product search
> http://shopping.yahoo.com
> 

_______________________________________________
Ayuda mailing list
Ayuda en linux org mx
Para salir de la lista: http://mail.linux.org.mx/mailman/listinfo/ayuda/



[Hilos de Discusión] [Fecha] [Tema] [Autor]