From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2700 invoked by alias); 26 Sep 2003 17:49:37 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 2692 invoked from network); 26 Sep 2003 17:49:36 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 26 Sep 2003 17:49:36 -0000 Received: from drow by nevyn.them.org with local (Exim 4.22 #1 (Debian)) id 1A2wik-00066V-H1; Fri, 26 Sep 2003 13:49:34 -0400 Date: Fri, 26 Sep 2003 17:50:00 -0000 From: Daniel Jacobowitz To: Andrew Greenlaw Cc: gdb@sources.redhat.com Subject: Re: "Cannot access memory at address 0x175f80" Message-ID: <20030926174934.GB23276@nevyn.them.org> Mail-Followup-To: Andrew Greenlaw , gdb@sources.redhat.com References: <3F747A00.3090302@agere.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3F747A00.3090302@agere.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-09/txt/msg00324.txt.bz2 On Fri, Sep 26, 2003 at 01:40:16PM -0400, Andrew Greenlaw wrote: > Hi. I'm debugging a C++ tool (called apple) that's loaded as a > dynamic library into a C - or C++ program (called orange) . Apple is > compiled with g++ 3.3.1, binutils 2.14, and debugging symbols are > enabled. Orange is a big unknown (meaning: I don't know how it was > compiled) and it has no debugging symbols. The gdb version is 5.3 > > Here are the flags used to compile Apple: > # -gdwarf-2 -g3 used to enable stepping through macro execution under > gdb 5.3 The explanation's under gdb 5.3 release notes. > Compile:g++ -std=c++98 -Wall -DLINUX -gdwarf-2 -g3 -D__USE_GNU > -D_GNU_SOURCE -fPIC file_name.cpp > > > Link: > g++ -shared $(LIBS) $(OBJSCHEF) $(PLIOBJSVCS_PLI) > InterfaceObjectVCS_PLI.o -o $@ -lc gdwarf-2 -g3 -fPIC > g++ -MD -std=c++98 -shared -lc -gdwarf-2 -g3 -fPIC -o > libapple.so > > When I go to debug apple, I run "gdb ", then use the > "add-symbol-file -readnow" gdb comman to load > the symbols from apple. From there, I can set breakpoints in C++ class > methods, no problem. But, there is 1 function (so, non-OO code), where > if I try to set a breakpoint, I get the following: > > (gdb) break nc_signal_raised > Cannot access memory at address 0x175f80 > > If I do an "nm" on the library, I get: > 00175f80 T nc_signal_raised > > Indicating that the address read by gdb is correct. Unlikely, since the library is not loaded at a base address of 0. > On a related, but less important note, when use ddd to debug & go to > a source file, I always get: "" is at address 0x10f5f0 > but contains no code. > > And yet I can set breakpoints or step through the code. What's > going on? > > Any help you can offer will be appreciated. I've been working on > this for 2 weeks, read every posting or piece of documentation I can > find. I'm at my wits' end! Why are you using add-symbol-file? Is the loader not done as a dlopen, i.e. are you dealing with something that has its own dynamic loader? If it's dlopen'd, gdb should automatically handle it. It seems unlikely that add-symbol-file without specifying a text offset is right, too. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer