[lldb-dev] [Bug 32549] New: Code not executed when using "n"

via lldb-dev lldb-dev at lists.llvm.org
Thu Apr 6 03:26:08 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=32549

            Bug ID: 32549
           Summary: Code not executed when using "n"
           Product: lldb
           Version: 3.3
          Hardware: Macintosh
                OS: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev at lists.llvm.org
          Reporter: fpc at microbizz.nl
                CC: llvm-bugs at lists.llvm.org

Created attachment 18236
  --> https://bugs.llvm.org/attachment.cgi?id=18236&action=edit
Test code to reproduce (requires fpc if you want to build it yourself)

This really weird. It looks like a piece of code is not executed when using "n"
to step through code. When setting multiple breakpoints and "c", the code does
get executed. The not-executed code (I assume, but it could be something else)
assigns an object field to a local variable

    a3Dpt := f3DPt;

but the variable never gets it value when using "n" to step through the code.
Below are the complete terminal proceedings. Note that things work fine when
using GDB instead of LLDB.


[G20:~] adriaan% cd Desktop/Test-LLDB/build/Test-Debug-i386/

[G20:Test-LLDB/build/Test-Debug-i386] adriaan% ls -l
total 416
drwxr-xr-x  7 adriaan  staff     238  4 apr 12:23 Objects
-rwxr-xr-x  1 adriaan  staff  212876  4 apr 12:23 Test
drwxr-xr-x  3 adriaan  staff     102  4 apr 12:23 Test.dSYM

[G20:Test-LLDB/build/Test-Debug-i386] adriaan% lldb -v
lldb-330.0.48

[G20:Test-LLDB/build/Test-Debug-i386] adriaan% lldb Test

(lldb) target create "Test"
Current executable set to 'Test' (i386).

(lldb) process launch --stop-at-entry -o stdout.txt
Process 424 launched:
'/Users/adriaan/Desktop/Test-LLDB/build/Test-Debug-i386/Test' (i386)
Process 424 stopped
* thread #1: tid = 0x116c, 0x8fe01000 dyld`_dyld_start, stop reason = signal
SIGSTOP
    frame #0: 0x8fe01000 dyld`_dyld_start
dyld`_dyld_start:
->  0x8fe01000 <+0>: popl   %edx
    0x8fe01001 <+1>: pushl  $0x0
    0x8fe01003 <+3>: movl   %esp, %ebp
    0x8fe01005 <+5>: andl   $-0x10, %esp

(lldb) breakpoint set --file UDrawObject.pas --line 78
Breakpoint 1: where = Test`DOTEST + 25 at UDrawObject.pas:78, address =
0x0002a4e9

(lldb) c
Process 424 resuming
Process 424 stopped
* thread #1: tid = 0x116c, 0x0002a4e9 Test`DOTEST(this=0x00350020) + 25 at
UDrawObject.pas:78, queue = 'com.apple.main-thread', stop reason = breakpoint
1.1
    frame #0: 0x0002a4e9 Test`DOTEST(this=0x00350020) + 25 at
UDrawObject.pas:78
   75      a3Dpt: t3DPoint;
   76   
   77     BEGIN
-> 78       SetValue;
   79       a3Dpt := f3DPt;
   80   
   81       WRITELN('DoTest');

(lldb) n
Process 424 stopped
* thread #1: tid = 0x116c, 0x0002a50b Test`DOTEST(this=0x00350020) + 59 at
UDrawObject.pas:79, queue = 'com.apple.main-thread', stop reason = step over
    frame #0: 0x0002a50b Test`DOTEST(this=0x00350020) + 59 at
UDrawObject.pas:79
   76   
   77     BEGIN
   78       SetValue;
-> 79       a3Dpt := f3DPt;
   80   
   81       WRITELN('DoTest');
   82       WRITELN('  thePbject.f3Dpt  = ',f3Dpt.x:12:3, f3Dpt.y:12:3,
f3Dpt.z:12:3);

(lldb) frame variable 
error: need to add support for DW_TAG_base_type 'FormalDef' encoded with DW_ATE
= 0x7, bit_size = 0
(TDRAWOBJECT) this = 0x00350020
(T3DPOINT) A3DPT = (X = 2.3942266318434001E-309, Y = -1.9375095375144227, Z =
1.16819093729663E-307)

(lldb) p *this
(TDRAWOBJECT) $0 = {
  FID = 10
  F3DPT = (X = 20, Y = 10, Z = 5)
  FQDPT = {
    V = 0
    H = 0
    VH = ([0] = 0, [1] = 0)
  }
}

(lldb) n
Process 424 stopped
* thread #1: tid = 0x116c, 0x0002a51b Test`DOTEST(this=0x00350020) + 75 at
UDrawObject.pas:81, queue = 'com.apple.main-thread', stop reason = step over
    frame #0: 0x0002a51b Test`DOTEST(this=0x00350020) + 75 at
UDrawObject.pas:81
   78       SetValue;
   79       a3Dpt := f3DPt;
   80   
-> 81       WRITELN('DoTest');
   82       WRITELN('  thePbject.f3Dpt  = ',f3Dpt.x:12:3, f3Dpt.y:12:3,
f3Dpt.z:12:3);
   83       WRITELN('  a3Dpt  = ',a3Dpt.x:12:3, a3Dpt.y:12:3, a3Dpt.z:12:3);
   84     END;

(lldb) frame variable
(TDRAWOBJECT) this = 0x00350020
(T3DPOINT) A3DPT = (X = 2.3942266309882071E-309, Y = -1.9375095375144227, Z =
1.16819093729663E-307)

(lldb) c
Process 424 resuming
Process 424 exited with status = 0 (0x00000000) 

(lldb) q

[G20:Test-LLDB/build/Test-Debug-i386] adriaan% cat stdout.txt 
DoTest
  thePbject.f3Dpt  =       20.000      10.000       5.000
  a3Dpt  =        0.000      -1.938       0.000

[G20:Test-LLDB/build/Test-Debug-i386] adriaan% lldb Test

(lldb) target create "Test"
Current executable set to 'Test' (i386).

(lldb) process launch --stop-at-entry -o stdout.txt
Process 473 launched:
'/Users/adriaan/Desktop/Test-LLDB/build/Test-Debug-i386/Test' (i386)
Process 473 stopped
* thread #1: tid = 0x1786, 0x8fe01000 dyld`_dyld_start, stop reason = signal
SIGSTOP
    frame #0: 0x8fe01000 dyld`_dyld_start
dyld`_dyld_start:
->  0x8fe01000 <+0>: popl   %edx
    0x8fe01001 <+1>: pushl  $0x0
    0x8fe01003 <+3>: movl   %esp, %ebp
    0x8fe01005 <+5>: andl   $-0x10, %esp

(lldb) breakpoint set --file UDrawObject.pas --line 78
Breakpoint 1: where = Test`DOTEST + 25 at UDrawObject.pas:78, address =
0x0002a4e9

(lldb) breakpoint set --file UDrawObject.pas --line 81
Breakpoint 2: where = Test`DOTEST + 75 at UDrawObject.pas:81, address =
0x0002a51b

(lldb) c
Process 473 resuming
Process 473 stopped
* thread #1: tid = 0x1786, 0x0002a4e9 Test`DOTEST(this=0x00350020) + 25 at
UDrawObject.pas:78, queue = 'com.apple.main-thread', stop reason = breakpoint
1.1
    frame #0: 0x0002a4e9 Test`DOTEST(this=0x00350020) + 25 at
UDrawObject.pas:78
   75      a3Dpt: t3DPoint;
   76   
   77     BEGIN
-> 78       SetValue;
   79       a3Dpt := f3DPt;
   80   
   81       WRITELN('DoTest');

(lldb) frame variable 
error: need to add support for DW_TAG_base_type 'FormalDef' encoded with DW_ATE
= 0x7, bit_size = 0
(TDRAWOBJECT) this = 0x00350020
(T3DPOINT) A3DPT = (X = 2.3942266318434001E-309, Y = -1.9375095375144227, Z =
1.16819093729663E-307)

(lldb) p *this
(TDRAWOBJECT) $0 = {
  FID = 10
  F3DPT = (X = 20, Y = 10, Z = 5)
  FQDPT = {
    V = 0
    H = 0
    VH = ([0] = 0, [1] = 0)
  }
}

(lldb) c
Process 473 resuming
Process 473 stopped
* thread #1: tid = 0x1786, 0x0002a51b Test`DOTEST(this=0x00350020) + 75 at
UDrawObject.pas:81, queue = 'com.apple.main-thread', stop reason = breakpoint
2.1
    frame #0: 0x0002a51b Test`DOTEST(this=0x00350020) + 75 at
UDrawObject.pas:81
   78       SetValue;
   79       a3Dpt := f3DPt;
   80   
-> 81       WRITELN('DoTest');
   82       WRITELN('  thePbject.f3Dpt  = ',f3Dpt.x:12:3, f3Dpt.y:12:3,
f3Dpt.z:12:3);
   83       WRITELN('  a3Dpt  = ',a3Dpt.x:12:3, a3Dpt.y:12:3, a3Dpt.z:12:3);
   84     END;

(lldb) frame variable 
(TDRAWOBJECT) this = 0x00350020
(T3DPOINT) A3DPT = (X = 20, Y = 10, Z = 5)

(lldb) c
Process 473 resuming
Process 473 exited with status = 0 (0x00000000) 

(lldb) q

[G20:Test-LLDB/build/Test-Debug-i386] adriaan% cat stdout.txt
DoTest
  thePbject.f3Dpt  =       20.000      10.000       5.000
  a3Dpt  =       20.000      10.000       5.000

[G20:Test-LLDB/build/Test-Debug-i386] adriaan%

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20170406/f4d62bcf/attachment.html>


More information about the lldb-dev mailing list