[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::decladebug

Title:Digital Ladebug debugger
Moderator:TLE::LUCIA
Created:Fri Feb 28 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:969
Total number of notes:3959

877.0. "too many overloaded functions" by DECC::MJHANS (Matthew Hanselman, DEC C) Mon Mar 10 1997 17:12

    If you attempt to set a breakpoint in C3::pub1(), ladebug will ask you
    for one of three possibly overloaded functions; there should only be a
    choice of two.
    
    From what I could tell by looking at stdumps, this is not a compiler issue.
    It does has to do with whether C1::pub1() is an inline function or not;
    if C1::pub1() is defined inline, note that the problem goes away.
    
    								
    ++++++++++++++++++++++++++++++
    // tmp.cxx
    struct C1 { 
    public:  
        int pub1();  // pub1() defined here will make the problem go away
        int pub1(int);
    };
    struct C2a : virtual C1 { 
        int a;
    };
    struct C2b : virtual C1 { 
        int a;
    };
    struct C3 : public C2a, public C2b {
        int a;
    } c3;
    
    int C1::pub1() {return pub1(0);}
    int C1::pub1(int i) {return i;}
    
    int main()
    {
    }
    +++++++++++++++++++++++++++++
    % ladebug a.out
    Welcome to the Ladebug Debugger Version 4.0-30
    ------------------ 
    object file name: a.out 
    Reading symbolic information ...done
    (ladebug) stop in C3::pub1
    Select an overloaded function
    ----------------------------------------------------
         1 int C1::pub1(int)
         2 int C1::pub1(void)
         3 int C1::pub1(int)
         4 None of the above
    ----------------------------------------------------
    
    							- Matt
T.RTitleUserPersonal
Name
DateLines
877.1Another test case....CXXC::MJHANSMatthew Hanselman, DEC C/C++Wed Mar 12 1997 13:1653
    In a related topic, this program fails as well.
    
    You cannot set a breakpoint in c3.g().  It complains about no valid
    breakpoint address.  I suspect that this is because if you attempt to
    set a breakpoint in C3::g(), it asks you to select an overloaded
    function.
    
    (DEC C++ V5.5-004)
                                                              
    +++++++++++++++++++++++++++
    class C1 {
    public: 
        int g() { return 0; }
    };
    
    
    class C2 : public virtual C1 {
    public:
        virtual int f() { return 0; }
    }; 
    
    class C3 :  public virtual C1, public virtual C2 {
    } c3;
    
    
    int main()
    {
        return c3.g();
    }
    +++++++++++++++++++++
    
    Welcome to the Ladebug Debugger Version 4.0-30
    ------------------ 
    object file name: a.out 
    Reading symbolic information ...done
    (ladebug) stop in main
    [#1: stop in int main(void) ]
    (ladebug) run
    [1] stopped at [int main(void):18 0x12000229c]
         18     return c3.g();
    (ladebug) stop in c3.g
    c3.g has no valid breakpoint address
    Warning: Breakpoint not set
    (ladebug) stop in C3::g
    Select an overloaded function
    ----------------------------------------------------
         1 int C1::g(void)
         2 int C1::g(void)
         3 None of the above
    ----------------------------------------------------
    
    
    							- Matt
877.2Added to listTLE::MERRITTSteve Merritt, Ladebug TeamFri Apr 18 1997 14:483
I've added this to the C++ bugs list.

-Steve