This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Remote debugging and dynamic libraries


Daniel Jacobowitz wrote:

i'm trying to remote debug a program running on an arm system running
linux but i ran into various problems. If i interrupt the
debugged program i can't get symbolic information where it stopped.
Also backtraces don't seem to work.

frank@linux:~/> /usr/local/bin/arm-linux-gdb
GNU gdb 6.3
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux".
(gdb) target remote 192.168.1.133:5555
Remote debugging using 192.168.1.133:5555
0x400028b0 in ?? ()
(gdb) symbol-file test



Don't do this. Use "file", not "symbol-file".


Can you tell me where you found anything which suggested that you
should use symbol-file? This bug is reported several times a year, and
I still don't know where the incorrect documentation is - I don't think
it's part of GDB.


You're right. I picked it up in some mailinglist archive while searching for
a solution to my problem.

Without an "exec file" loaded, which symbol-file does not do, GDB won't
find the dynamic loader or be able to load shared libraries.


1)
set solib-absolute-prefix /usr/local/arm/arm-linux/



This is the correct way - IFF the directory under that path looks like
a root filesystem. If it's laid out like an old-style cross toolchain,
this may not work. Paths should match the paths on the target.


I gave it a try using "file test" and
"set solib-absolute-prefix /usr/local/arm/arm-linux/" but had no success so far.


frank@linux:~/uclibc_kram/apdf> arm-linux-gdb
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux".
(gdb) file test
Reading symbols from /home/frank/test...done.
(gdb) set solib-absolute-prefix /usr/local/arm/arm-linux/
(gdb) target remote 192.168.1.133:5555
Remote debugging using 192.168.1.133:5555
0x000080e0 in ?? ()
(gdb) l
1       int main() {
2               while(1)
3               {
4                       printf("bla");
5
6               }
7
8       }
(gdb) b 1
Breakpoint 1 at 0x8428: file main.c, line 1.
(gdb) c
Continuing.

Breakpoint 1, main () at main.c:1
1       int main() {
(gdb) n
2               while(1)
(gdb) n
0x0001a12c in ?? ()
(gdb) n
Cannot find bounds of current function
(gdb) n
Cannot find bounds of current function
(gdb) n
Cannot find bounds of current function

(gdb) The program is running.  Exit anyway? (y or n) y
frank@linux:~/uclibc_kram/apdf> arm-linux-gdb
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux".
(gdb)  file test
Reading symbols from /home/frank/test...done.
(gdb) set solib-absolute-prefix /usr/local/arm/arm-linux/
(gdb) target remote 192.168.1.133:5555
Remote debugging using 192.168.1.133:5555
0x000080e0 in ?? ()
(gdb) c
Continuing.

Program received signal SIGINT, Interrupt.
0x000080e0 in ?? ()
(gdb) c
Continuing.

Program received signal SIGINT, Interrupt.
0x000282b4 in ?? ()
(gdb) bt
#0  0x000282b4 in ?? ()

test depends only on the libc and the dynamic linker.
On the target these files are installed in /lib. The GDB
should be able to found them in
/usr/local/arm/arm-linux/lib.

Any ideas how i can solve this problem?

Regards,
 Frank


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]