Autore Topic: Segnale #11  (Letto 1043 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Segnale #11
« il: 16 Marzo 2009, 01:08:27 »
Quando il programma si blocca visualizzando questo messaggio:

Il programma si è bloccato inaspettatamente con segnale #11

quale può essere un metodo pratico per capire dove il codice va in crash in un form con circa tremila righe di codice?
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Segnale #11
« Risposta #1 il: 16 Marzo 2009, 20:22:26 »
Il segnale #11 si scatena quando c'è un problema in memoria, in particolare se è presente un loop infinito incontrollato in qualche parte di codice.

Purtroppo non c'è un metodo per catturare questo errore, perchè il debug viene scavalcato. Dovresti controllare a fondo il codice, per vedere se c'è qualcosa che può dare problemi in determinate circostanze.

Sò che la cosa non è facile, ma questo accade normalmente anche con altri linguaggi, ed è abbastanza facile che si verifichi...

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Segnale #11
« Risposta #2 il: 17 Marzo 2009, 00:00:36 »
Già il fatto di avermi indicato che la causa può essere un loop magari è un punto di partenza.Grazie
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Segnale #11
« Risposta #3 il: 17 Marzo 2009, 09:46:08 »
Citazione

tornu ha scritto:
Quando il programma si blocca visualizzando questo messaggio:

Il programma si è bloccato inaspettatamente con segnale #11

quale può essere un metodo pratico per capire dove il codice va in crash in un form con circa tremila righe di codice?


Non so se hai risolto; comunque, se posso essere d'aiuto, in casi come quello di errore provocato da un loop, io agisco nel seguente modo:
in base alla codifica che sto provando,
1) individuo il passo di programma che può avere provocato il loop
2) attivo un stop premendo il tasto F9 su un'istruzine precedente le istruzioni di ciclo iterativo;
3) mando in esecuzione il programma fino all'istruzione predisposta con F9;
4) quando il programma si ferma all'istruzione desiderata, procedo passo passo eseguendo le istruzioni una dopo l'altra con l'apposito pulsante virtuale "passo", in modo da ripercorrere manualmente le istruzioni che provocano il loop.
A quel punto, seguendo la logica di esecuzione che volevo ottenere e, ragionando sul risultato anomalo ottenuto, riconosco il punto di intervento e correggo il programma. Dopo di che, riprovo.
Molto probabilmente ho citato un procedimento da debug che già conosci, ma non si sa mai.
Se hai davanti ancora il problema, buon lavoro!
 :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Segnale #11
« Risposta #4 il: 17 Marzo 2009, 14:02:09 »
In effetti, quello del loop è una delle cause, ma è anche causa nella maggior parte del problema #11.

Diciamo, che ho notato che, a parte alcune anomalie non bloccanti, più che altro a livello grafico, Gambas è molto difficile che si blocchi e si incasini al punto da perdere completamente i puntamenti. Di solito, la cusa è da imputarsi ad errori di logica del programma che, non opportunamente controllati, o previsti, posso portare a problemi del genere.
Il signal #11, di norma si verifica quando le risorse sono a tappo, e il motivo molto probabile è quello di un loop impazzito che, magari, crea oggetti o fà uso di strutture che alla fine esauriscono lo spazio a disposizione; a questo punto Gambas scoppia, e và in crash. In realtà è un crash controllato, tanto è vero l'ide rimane in piedi.

Un'altro errore potrebbe essere l'utilizzo di una sintassi per la creazione di oggetti dinamicamente, e magari qualcosa non viene opportunamente settato, per cui l'interprete non riesce a codificarne la causa, ma provocando volutamente un crash, onde evitare problemi maggiori.

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Segnale #11
« Risposta #5 il: 17 Marzo 2009, 21:46:06 »
@picavbg

Si ho risolto, era un loop infinito creato da un problema su una ComboBox che con le Gtk attiva la proprietà _Click anche se nessuno ci clicca sopra (ne ho parlato in un altra mia discussione).
Comunque grazie lo stesso per il suggerimento che hai descritto, io già lo uso ma può sempre servire come indicazione a chi magari non conosce o non sa usare il debug o eseguire il codice passo-passo.

@md9327

Per le tue immancabili puntuali spiegazioni, ancora grazie (ultimamente nei tuoi confronti non faccio altro che ringraziarti......  :-))
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Segnale #11
« Risposta #6 il: 18 Marzo 2009, 14:30:36 »
Infatti, ci stò prendendo gusto... :-P