[Lazarus] Some debug facts/improves

Martin lazarus at mfriebe.de
Sat Oct 3 14:40:18 CEST 2009


Hi JoshyFun,

in this context, maybe have a look at: 
http://bugs.freepascal.org/view.php?id=10665

I don't know if it overlaps with your plans, or is unrelated...

Best Regards
Martin

JoshyFun wrote:
> Hello Lazarus-List,
>
> I'm trying to improve some debug parts up to where my skills let me
> and I had found some things that I was unable to understand:
>
> 1) I was unable to find how TIDEWatch is connected with GDBMIDebugger,
> in special the "GetValue" property getter. As I understand GetValue
> will return the "default value representation" so to add override
> representation, in example "memory dump", a new function should be
> added like "GetValue(FormatSet)".
>
> 2) The IDE hints are always draw using DT_CENTER which ruins any
> multiline representation. Is possible to remove this DT_CENTER from
> "procedure THintWindow.Paint" ?
>
> 3) In the case of class debug I had added to the result the data
> returned from evaluating de dereference, something like inspecting
> "Class" and "Class^" which offers more information. Are this kind of
> improvements of some interest ?
>
> 4) gdb class information looks very strange to me, in example a
> TMemoryStream dumps:
>
> ~"type = TMEMORYSTREAM = class : public TCUSTOMMEMORYSTREAM \n"
> ~"  private\n"
> ~"    FCAPACITY : LONGINT;\n"
> ~"\n"
> ~"  public\n"
> ~"    procedure SETCAPACITY (TMEMORYSTREAM, ONGINT, );\n"
> ~"    function  REALLOC (TMEMORYSTREAM, ONGINT, ) : POINTER; virtual;\n"
> ~"    destructor  ~DESTROY (TMEMORYSTREAM, OINTER); virtual;\n"
> ~"    procedure CLEAR (TMEMORYSTREAM);\n"
> ~"    procedure LOADFROMSTREAM (TMEMORYSTREAM, STREAM, );\n"
> ~"    procedure LOADFROMFILE (TMEMORYSTREAM, ANSISTRING);\n"
> ~"    procedure SETSIZE (TMEMORYSTREAM, ONGINT, ); virtual;\n"
> ~"    function  WRITE (TMEMORYSTREAM, onst7, ) : LONGINT; virtual;\n"
> ~"end\n"
>
> Note the missing "L" in second parameter when LONGINT was expected, or
> missing "T" in LOADFROMSTREAM, but the most strange to me is the
> "onst7". What's "const7" ? Does anybody know why those letters are
> missing ?
>
> 5) When an exception is raised and "stop" button is pressed usually
> the assembler window pops up instead the line where the exception
> happends, or the nearest line with debug information. I had changed my
> code to show the assembler window only if no line with debug
> information is found in the backtrace. But I do not exactly know how
> that procedure works and maybe I missed something important, or maybe
> that's the expected behavior :-?
>
>   





More information about the Lazarus mailing list