bug-gdb
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GDB: program receives SIGSEGV when passed an object (rather than refere


From: drazen
Subject: GDB: program receives SIGSEGV when passed an object (rather than reference) in debugger
Date: Tue, 20 May 2008 13:24:19 -0700 (PDT)
User-agent: G2/1.0

Hi,
I bring the following code in the debugger:
 0  //-------------------------------------------------
 1  class F {
 2  public:
 3     int m_F;
 4     //-------
 5     F(int x)  : m_F(x) // constructor
 6     { }
 7     F(const F& f) :  m_F(f.m_F) // copy constructor
 8     { }
 9  };
10
11  int  getMember(F f)     // NOTE:  an object is passed, not a
reference
12  {
13     return f.m_F;
14  }
15
16  int main()
17  {
18    F f1(3);
19    int i = getMember(f1);
20    return 0;
21  }
22
23  //----------------------------------------------

As I step through main, line 19 executes correctly, and "i" contains 3
as expected.
Then I invoke "getMember()"  from the debugger, and the program under
the debugger receives SIGSEGV:
(gdb)  print   getMember(f1)
Program received signal SIGSEGV, Segmentation fault.
getMember (f1=Cannot access memory at address 0x3) at f.cc:15
The program being debugged was signaled while in a function called
from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on"
Evaluation of the expression containing the function (getMember(F))
will be abandoned.
------------------------------------------------------------------------------
1. If "getMember()" takes reference to F, everything is fine when
"getMember()" is called from gdb.
2. If I use C instead of C++, and struct, again everything is fine.
3. The system is   (uname -a)
     Linux belgrade 2.4.21-50.ELsmp #1 SMP Tue May 8 17:10:20 EDT 2007
x86_64 x86_64 x86_64 GNU/Linux
4. The compiler is gcc.
5. I tried using gdb 6.3 and 6.8 (the newest), and both behave
identically.

Thanks, Drazen


reply via email to

[Prev in Thread] Current Thread [Next in Thread]