This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug c++/20837] New: Destructor appears twice in the stack trace
- From: "jinq0123 at 163 dot com" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Fri, 18 Nov 2016 08:01:02 +0000
- Subject: [Bug c++/20837] New: Destructor appears twice in the stack trace
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=20837
Bug ID: 20837
Summary: Destructor appears twice in the stack trace
Product: gdb
Version: 7.6
Status: UNCONFIRMED
Severity: minor
Priority: P2
Component: c++
Assignee: unassigned at sourceware dot org
Reporter: jinq0123 at 163 dot com
Target Milestone: ---
Created attachment 9645
--> https://sourceware.org/bugzilla/attachment.cgi?id=9645&action=edit
simple test destructor
A::~A() appears twice:
(gdb) bt
#0 A::~A (this=0x602010, __in_chrg=<optimized out>) at main.cpp:10
#1 0x0000000000400a96 in A::~A (this=0x602010, __in_chrg=<optimized out>)
at main.cpp:12
#2 0x00000000004009c0 in main () at main.cpp:18
Should be once.
See the attached code:
class A
{
public:
A() {}
virtual ~A()
{
cout << "~A()" << endl;
}
};
int main()
{
A* p = new A;
delete p;
return 0;
}
Breakpoint A::~A has 2 locations:
(gdb) b A::~A
Breakpoint 1 at 0x400a40: A::~A. (2 locations)
The full gdb session:
g++ -g main.cpp
[jinq@localhost test]$ gdb a.out
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-80.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/jinq/test/a.out...done.
(gdb) b A::~A
Breakpoint 1 at 0x400a40: A::~A. (2 locations)
(gdb) run
Starting program: /home/jinq/test/a.out
Breakpoint 1, A::~A (this=0x602010, __in_chrg=<optimized out>) at
main.cpp:12
12 }
Missing separate debuginfos, use: debuginfo-install
glibc-2.17-106.el7_2.8.x86_64 libgcc-4.8.5-4.el7.x86_64
libstdc++-4.8.5-4.el7.x86_64
(gdb) bt
#0 A::~A (this=0x602010, __in_chrg=<optimized out>) at main.cpp:12
#1 0x00000000004009c0 in main () at main.cpp:18
(gdb) s
Breakpoint 1, A::~A (this=0x602010, __in_chrg=<optimized out>) at
main.cpp:10
10 {
(gdb) bt
#0 A::~A (this=0x602010, __in_chrg=<optimized out>) at main.cpp:10
#1 0x0000000000400a96 in A::~A (this=0x602010, __in_chrg=<optimized out>)
at main.cpp:12
#2 0x00000000004009c0 in main () at main.cpp:18
(gdb) ^CQuit
(gdb)
Twice if it is virtual destructor and is called by delete.
Also see:
http://lists.qt-project.org/pipermail/interest/2015-November/019691.html
--
You are receiving this mail because:
You are on the CC list for the bug.