Intercettare un runtime error

Discussioni sui linguaggio Delphi

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
trev
New Entry
Messaggi: 4
Iscritto il: 07 lug 2016, 07:35

Intercettare un runtime error

Messaggioda trev » 07 lug 2016, 14:55

Salve a tutti
in Delphi Pascal esiste un modo per intercettare un runtime error?
Più o meno come nell'esempio proposto (che tuttavia non funziona con le nuove versioni di Delphi Pascal), nel quale, in caso di qualsiasi errore runtime, si crea un file con il numero di errore, utile per capire meglio cosa è successo.
Grazie in anticipo!

var vecchiaexit :pointer;

Codice: Seleziona tutto

{$F+} procedure miaexit;  {$F+}
begin
  if not (erroraddr=nil) then
  begin
    if exitcode<>0 then
    begin
       assignfile(testoerr,'file_errore.txt');
       rewrite(testoerr);
       writeln(testoerr,'ERRORE NON RECUPERABILE: ',exitcode);
       closefile(testoerr);
    end;
    exitproc:=vecchiaexit;
    erroraddr:=nil;
  end;
end;

Con l'inizializzazione:
vecchiaexit:=exitproc;
exitproc:=@miaexit;
Avatar utente
migliorabile
Saggio
Messaggi: 2259
Iscritto il: 05 apr 2013, 09:44

Re: Intercettare un runtime error

Messaggioda migliorabile » 07 lug 2016, 19:50

trev
New Entry
Messaggi: 4
Iscritto il: 07 lug 2016, 07:35

Re: Intercettare un runtime error

Messaggioda trev » 07 lug 2016, 20:27

D'accordo.
Ma se, in un listato di migliaia di linee, non so assolutamente dove può essersi verificato l'errore, c'è un altro metodo che mi consenta di avere il codice del runtime error?
L'errore che tento di stanare è molto aleatorio; a volte si verifica, altre no e non sembra essere un classico... (in un windows 7, forse un po' bacato, addirittura faceva ripartire il sistema! Ora, con il 10, il SO non salta più ma il programma a volte si chiude senza dare informazioni)
Avatar utente
migliorabile
Saggio
Messaggi: 2259
Iscritto il: 05 apr 2013, 09:44

Re: Intercettare un runtime error

Messaggioda migliorabile » 07 lug 2016, 21:24

Questa e' TUTTA un'altra storia.
Non uso Delphi da una vita, quindi non mi ricordo se nell'eccezzione c'e' anche il callstack.
Se non c'e', ti tocca andare di log ed in modo iterativo, cercando, ad ogni passo, di isolare la zona di codice coinvolta, e poi perche' avviene.
Non mi risulta esistano altri metodi miracolosi.
Spiacente
trev
New Entry
Messaggi: 4
Iscritto il: 07 lug 2016, 07:35

Re: Intercettare un runtime error

Messaggioda trev » 07 lug 2016, 21:40

Grazie.
Almeno ora so... di che debugging devo morire;-)
trev
New Entry
Messaggi: 4
Iscritto il: 07 lug 2016, 07:35

Re: Intercettare un runtime error

Messaggioda trev » 07 lug 2016, 22:06

PS: ho trovato questo link forse interessante:
http://www.jirihajek.net/delphi/ExceptLog.htm
Avatar utente
+m+
Saggio
Messaggi: 716
Iscritto il: 09 gen 2016, 09:44

Re: Intercettare un runtime error

Messaggioda +m+ » 08 lug 2016, 17:45

Eurekalog
Tutto è facile, se deve farlo qualcun altro
eirōneía
siete in qualche misura "vittime" di un sistema scolastico allo sbando, in Italia e purtroppo in tutta Europa, sebbene in misura minore :D

Torna a “Delphi”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite