Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Mario - 10 Luglio 2008, 15:15:41

Titolo: Debug di un programma
Inserito da: Mario - 10 Luglio 2008, 15:15:41
Ehilà :-)

Ho un nuovo problemino.
Come ho detto altrove, finalmente sono riuscito a far funzionare la versione per Linux dell'ODBC per i sistemi iSeries.
Quando utilizzo l'utility "isql" riesco a connettermi e a interrogare velocemente i dati del sistema centrale (ho provato su diversi sistemi con diverse release e tutte sono Ok).
Ho preparato un programmino per fare delle prove, e dentro ci ho messo una cosa come questa
Codice: [Seleziona]

  db = NEW Connection
 
  'Collegamento all AS/400
  WITH db
    .Type = "odbc"
    .Host = iSeries
    .Login = User
    .Password = Pwd
  END WITH
 
  db.Open

e fin qui tutto bene.

Il problema è che in un altro punto del programma faccio questo
Codice: [Seleziona]

  sql = "select CDCLI, RASCL from ACGXDATV2.ANCL200F order by Rascl"
  dati = db.Exec(sql)

e quando va in esecuzione la seconda riga, mi va in errore generico (#11).
Ovviamente non pretendo che qualcuno mi dica "cosa" non funziona, ma vorrei sapere se esiste il modo per vedere cosa è successo dietro le quinte :-)

Grazie
Titolo: Re: Debug di un programma
Inserito da: Mario - 10 Luglio 2008, 16:20:56
Uhm, dopo qualche analisi ulteriore ho trovato una mezza risposta:
leggendo i LOG ad un certo punto dice che si verifica un errore di "general protection" nel modulo GBX2.
Mr Google, mi ha confermato che GBX2 è il modulo di esecuzione di Gambas, quindi c'è qualcosa che non va.
A questo punto come faccio a sapere "esattamente" cosa è successo? :-)
Titolo: Re: Debug di un programma
Inserito da: Mario - 10 Luglio 2008, 16:24:24
Altro elemento: ho provato a usare il "gestore di database" e nel collegamento esce improvvisamente senza dare altri errori ... :-O
Titolo: Re: Debug di un programma
Inserito da: leo72 - 14 Luglio 2008, 23:04:39
L'errore con segnale #11 è un po' come il "segmentation fault" di Linux: indica un errore di tipo generico, che può essere causato da una miriade di cose, compresi bachi di Gambas (gbx2, appunto) o chiamate ai driver del DB non tradotte correttamente.

Prova iniziando a semplificare la stringa SQL per vedere se qualcosa nel driver traduce la tua richiesta in maniera errata (ad esempio, prova togliendo l'ordinamento, prova selezionando tutti i campi, poi solo uno poi due ecc...).