https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88742

            Bug ID: 88742
           Summary: Debugger jumps back when stepping over class
                    destructor
           Product: gcc
           Version: 8.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ks1322 at gmail dot com
  Target Milestone: ---

This is basically the same bug report as the Bug 49951 because it can be
reproduced with recent version of gcc.
I don't know whether Bug 49951 should be reopened or not, so I am reporting the
new one.

In short, when stepping to destructor code in debugger, it jumps back to the
declaration of the class.

The code:

#include <stdio.h>

class MyClass
{
public:
      MyClass() {};  // constructor
     ~MyClass() {};  // destructor
};


int main ()
{
     int i = 1;
     MyClass m;

     if (i == 1)
     {
         printf ("Hello world %d\n", i);
     }
}

Compiling:

g++ -Wall -Wextra -g -O0 t03.cpp

Debugging:

$ gdb -q a.out
Reading symbols from a.out...done.
(gdb) start
Temporary breakpoint 1 at 0x40114f: file t03.cpp, line 13.
Starting program: /tmp/a.out 
Missing separate debuginfos, use: dnf debuginfo-install
glibc-2.28-23.fc29.x86_64

Temporary breakpoint 1, main () at t03.cpp:13
13           int i = 1;
Missing separate debuginfos, use: dnf debuginfo-install
libgcc-8.2.1-5.fc29.x86_64 libstdc++-8.2.1-5.fc29.x86_64
(gdb) n
14           MyClass m;
(gdb) 
16           if (i == 1)
(gdb) 
18               printf ("Hello world %d\n", i);
(gdb) 
Hello world 1
14           MyClass m;
(gdb) 
20      }

Note the jump back to line 14 before continuing to line 20.
I don't observe this behavior with clang, no jumps back in debugger (clang
version 7.0.0).

Reply via email to