On 30/09/2011 23:23, Martin wrote:
On 30/09/2011 14:02, Joost van der Sluis wrote:
Please test this gdb-version, and tell me about your experiences.
Especially Martin. ;)

Oh, you can download it here:
http://www.lazarussupport.com/gdb_lazarssupport_20110930.zip



It crashes when -Xe (external linker) was used. Also crashes with stabs...

I am not 100% sure, but it appears to choke on
-data-evaluate-expression FPC_THREADVAR_RELOCATE_PROC

Ok, seems to have big issues with strings in fields.

Run the ExceptionPrg from debugger\test\Gdbmi\TestApps\ExceptPrg.lpr in lazarus.
On hitting the breakpoint in fpc_raise_exception:

>> TCmdLineDebugger.SendCmdLn "x/s Exception($eax).FMessage"
<< TCmdLineDebugger.ReadLn "&"x/s Exception($eax).FMessage\n""
<< TCmdLineDebugger.ReadLn "&"Cannot resolve DW_OP_push_object_address for a missing object\n""

if you keep the session running, and set the stackframe to fpc_raise_exception (the IDE will have lowered it), then you can send the following commands:

<p Exception($eax)>
&"p Exception($eax)\n"
~"$2 = (^Exception = class ) 0x78660\n"
^done
(gdb)
<p Exception($eax)^>
&"p Exception($eax)^\n"
~"$3 = {<TObject> = {_vptr$TOBJECT = 0x415018}, fmessage = 'abc'"
~", fhelpcontext = 0"
~", HelpContext = 0"
~", Message = 'abc'"
~"}"
~"\n"
^done
(gdb)
<p Exception($eax).Message>
&"p Exception($eax).Message\n"
&"Cannot access memory at address 0x636260ff\n"
^error,msg="Cannot access memory at address 0x636260ff"
(gdb)
<p Exception($eax).FMessage>
&"p Exception($eax).FMessage\n"
&"Cannot access memory at address 0x636260ff\n"
^error,msg="Cannot access memory at address 0x636260ff"
(gdb)
<p Exception($eax)^.FMessage>
&"p Exception($eax)^.FMessage\n"
&"Cannot access memory at address 0x636260ff\n"
^error,msg="Cannot access memory at address 0x636260ff"
(gdb)



--------------------------------------------------------------

In an other attempt, using this program:

program Project1;

{$mode objfpc}{$H+}
type
  TFoo=class
  private
    FText:string;
  end;

var
  a: TFoo;

begin
  a := TFoo.Create;
  a.FText := 'abcde';
  writeln(1);
  readln;
end.

sending to the debugger (without the <>)

<p a>
&"p a\n"
~"$1 = 0x107488\n"
^done
(gdb)
<p a^>
&"p a^\n"
~"$2 = {<TObject> = {_vptr$TOBJECT = 0x40e018}, FText = 'abcde'"
~"}"
~"\n"
^done
(gdb)
<p a.FText>
&"p a.FText\n"
~"$3 = 'abcde'"
~"\n"

the text is correct => but gdb crashes at this point.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to