Re: Debugging 64-bit programs using 32-bit GDB
Doug Evans <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CADPb22Q-Z19v99FUs-1vMYrMxaq0knQtU_tPkPYcDeNrgY0f6Q@mail.gmail.com> |
On Wed, Jul 24, 2013 at 7:33 AM, Pedro Alves <[email protected]> wrote: > On 07/09/2013 11:06 AM, Nikita Karetnikov wrote: >> Is it possible to debug a 64-bit executable ('bin/guile' [1]) using >> 32-bit GDB? (I use GNU/Linux.) > > I don't think so. The ptrace registers interfaces allow retrieving > the right register sets (at least the modern interfaces), but > things like breakpoints, etc. won't work, as the 32-bit GDB won't > be able to handle the inferior's 64-bit addresses (due to how ptrace > works). Last I checked, Power had extra ptrace interfaces for that. > Don't know about MIPS. > > (you can however connect a 32-bit GDB to a 64-bit GDBserver, and use > that to debug a 64-bit program, though that's more trouble > than just using a 64-bit GDB.). > >> >> I've tried to configure GDB 7.6 with '--enable-64-bit-bfd' (see [2]), >> but it still shows "mips-tdep.c:709: internal-error: bad register >> size". > > The x86_64 port catches the case early and bails out (amd64_linux_read_description): > > if (sizeof (void *) == 4 && is_64bit && !is_x32) > error (_("Can't debug 64-bit process with 32-bit GDB")); [filed for reference sake] Alas basic 32-bit linux builds of gdb don't compile amd64-linux-nat.c. It would be really nice to print a better error message than the following for 32-bit gdb debugging 64-bit executable: "/tmp/hello.x64": not in executable format: File format not recognized It's a not uncommon failure mode. Hmmm, amd64-linux-nat.c is not compiled even if I do --enable-targets=all --enable-64-bit-bfd. When does the above error get triggered?