Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   StackTrace (https://www.clubdelphi.com/foros/showthread.php?t=79126)

mightydragonlor 08-06-2012 23:53:47

StackTrace
 
Hola a todos, muchos de nosotros nos hemos preguntado como obtener el StackTrace en Lazarus para poder dar con el fragmento de código que nos genera excepciones, que a veces son muy difíciles de encontrar, para eso, les dejo una función que nos ayuda con esta tarea:
Código Delphi [-]
function TForm1.DumpExceptionCallStack(E: Exception):String;
var
  I: Integer;
  Frames: PPointer;
  Report: string;
begin
  Report := 'Program exception! ' + LineEnding +
    'Stacktrace:' + LineEnding + LineEnding;
  if E <> nil then begin
    Report := Report + 'Exception class: ' + E.ClassName + LineEnding +
    'Message: ' + E.Message + LineEnding;
  end;
  Report := Report + BackTraceStrFunc(ExceptAddr);
  Frames := ExceptFrames;
  for I := 0 to ExceptFrameCount - 1 do
    Report := Report + LineEnding + BackTraceStrFunc(Frames[i]);
  Result := Report;
end;

Se usa de la siguiente forma:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
  number,I: Integer;
begin
  Try
    number := StrToInt('A');
  except
    on E : Exception do
    Begin
      ShowMessage(E.ClassName + ' error raised, with message : ' + E.Message
      + DumpExceptionCallStack(E));
    End;
  end;
end;
Se debe incluir la Unidad LCLProc, del paquete LCL, espero que les sirva de algo.

Saludos.

Casimiro Notevi 09-06-2012 00:15:13

Gracias por la información.

Y recuerda poner títulos descriptivos ;)

mightydragonlor 09-06-2012 00:29:43

Cita:

Empezado por Casimiro Notevi (Mensaje 434748)
Y recuerda poner títulos descriptivos ;)

Tienes razón Casimiro, la verdad se me pasó.


La franja horaria es GMT +2. Ahora son las 23:43:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi