[fpc-devel] [AVR] Debugging objects
Dimitrios Chr. Ioannidis
d.ioannidis at nephelae.eu
Sat Sep 24 09:31:54 CEST 2022
Hi,
it seems that there is another DWARF bug regarding objects in units.
Using MPLAB SNAP, ATBACKEND and gdb ( 8.3 ) session :
-----------------------
Reading symbols from avr_object_debug_test.elf...
(gdb) target remote :2345
Remote debugging using :2345
0x00000000 in _START ()
(gdb) monitor tool snap
(gdb) monitor device atmega328p debugwire
(gdb) load
Loading section .text, size 0x74a lma 0x0
Loading section .data, size 0x5e lma 0x74a
Start address 0x0, load size 1960
Transfer rate: 688 bytes/sec, 980 bytes/write.
(gdb) break main
Breakpoint 1 at 0xa2: file avr_object_debug_test.pas, line 10.
(gdb) monitor reset
(gdb) c
Continuing.
Breakpoint 1, $main () at avr_object_debug_test.pas:10
10 TestObj.DoSomething;
(gdb) s
UTESTOBJs_sTTESTOBJ_s__ss_DOSOMETHING () at utestobj.pas:16
16 x := 5;
(gdb) print x
No symbol "x" in current context.
(gdb) s
17 Inc(i);
(gdb) print i
$1 = 7
(gdb) print x
No symbol "x" in current context.
(gdb) s
18 x := i;
(gdb) print x
No symbol "x" in current context.
(gdb) print i
$2 = 7
(gdb)
-----------------------
Compiled with avr cross compiler 3.2.2 and 3.2.3 ( builded 23/9/2022 )
with "-Tembedded -Pavr -MObjFPC -Sai -CirotR -O1 -gw3 -Xg -a -al -Xe -Xm
-Sm -WpATMEGA328P -CpAVR5 -godwarfsets -dF_CPU:=16000000
avr_object_debug_test.pas"
-----------------------
program avr_object_debug_test;
uses
utestobj;
var
TestObj: TTestObj;
begin
TestObj.DoSomething;
end.
-----------------------
-----------------------
unit utestobj;
interface
type
TTestObj = object
procedure DoSomething;
end;
implementation
procedure TTestObj.DoSomething;
var
i, x: SizeInt;
begin
x := 5;
Inc(i);
x := i;
end;
end.
-----------------------
utestobj unit dwarf Info
-----------------------
<0><1061>: Abbrev Number: 1 (DW_TAG_compile_unit)
<1062> DW_AT_name : utestobj.pas
<106f> DW_AT_producer : Free Pascal 3.2.3 2022/09/23
<108c> DW_AT_comp_dir :
G:/Programming/dimitris/Projects/fpc_avr_bugs/debug_objects/
<10c9> DW_AT_language : 9 (ANSI Pascal)
<10ca> DW_AT_identifier_case: 3 (case_insensitive)
<10cb> DW_AT_stmt_list : 0xe3
<10cf> DW_AT_low_pc : 0x6f6
<10d3> DW_AT_high_pc : 0x74a
<1><10d7>: Abbrev Number: 2 (DW_TAG_typedef)
<10d8> DW_AT_name : TTestObj
<10e1> DW_AT_type : <0x10e5>
<1><10e5>: Abbrev Number: 3 (DW_TAG_structure_type)
<10e6> DW_AT_name : TTestObj
<10ef> DW_AT_byte_size : 0
<2><10f0>: Abbrev Number: 0
<1><10f1>: Abbrev Number: 4 (DW_TAG_reference_type)
<10f2> DW_AT_type : <0x10d7>
<1><10f6>: Abbrev Number: 2 (DW_TAG_typedef)
<10f7> DW_AT_name : $vmtdef$TTESTOBJ
<1108> DW_AT_type : <0x110c>
<1><110c>: Abbrev Number: 3 (DW_TAG_structure_type)
<110d> DW_AT_name : $VMTDEF$TTESTOBJ
<111e> DW_AT_byte_size : 8
<2><111f>: Abbrev Number: 0
<1><1120>: Abbrev Number: 4 (DW_TAG_reference_type)
<1121> DW_AT_type : <0x10f6>
<1><1125>: Abbrev Number: 2 (DW_TAG_typedef)
<1126> DW_AT_name : $rttidef$INIT_$UTESTOBJ_$$_TTESTOBJ
<114a> DW_AT_type : <0x114e>
<1><114e>: Abbrev Number: 3 (DW_TAG_structure_type)
<114f> DW_AT_name : $RTTIDEF$INIT_$UTESTOBJ_$$_TTESTOBJ
<1173> DW_AT_byte_size : 24
<2><1174>: Abbrev Number: 0
<1><1175>: Abbrev Number: 4 (DW_TAG_reference_type)
<1176> DW_AT_type : <0x1125>
<1><117a>: Abbrev Number: 2 (DW_TAG_typedef)
<117b> DW_AT_name : $rttidef$RTTI_$UTESTOBJ_$$_TTESTOBJ
<119f> DW_AT_type : <0x11a3>
<1><11a3>: Abbrev Number: 3 (DW_TAG_structure_type)
<11a4> DW_AT_name : $RTTIDEF$RTTI_$UTESTOBJ_$$_TTESTOBJ
<11c8> DW_AT_byte_size : 20
<2><11c9>: Abbrev Number: 0
<1><11ca>: Abbrev Number: 4 (DW_TAG_reference_type)
<11cb> DW_AT_type : <0x117a>
<1><11cf>: Abbrev Number: 0
-----------------------
regards,
--
Dimitrios Chr. Ioannidis
More information about the fpc-devel
mailing list