[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-discuss] How to GDB step debug a dynamically linked executable in
From: |
Ciro Santilli |
Subject: |
[Qemu-discuss] How to GDB step debug a dynamically linked executable in QEMU user mode? |
Date: |
Fri, 13 Jul 2018 10:32:11 +0100 |
https://stackoverflow.com/questions/51310756/how-to-gdb-step-debug-a-dynamically-linked-executable-in-qemu-user-mode
For example for ARM, if I compile statically, all works fine:
sudo apt-get install gdb-multiarch gcc-arm-linux-gnueabihf qemu-user
printf '
#include <stdio.h>
#include <stdlib.h>
int main() {
puts("hello world");
return EXIT_SUCCESS;
}
' > hello_world.c
arm-linux-gnueabihf-gcc -ggdb3 -static -o hello_world hello_world.c
qemu-arm -L /usr/arm-linux-gnueabihf -g 1234 ./hello_world
On another terminal:
gdb-multiarch -q --nh \
-ex 'set architecture arm' \
-ex 'set sysroot /usr/arm-linux-gnueabihf' \
-ex 'file hello_world' \
-ex 'target remote localhost:1234' \
-ex 'break main' \
-ex continue \
;
This leaves me at `main`, and I can see the source and step debug as usual.
However, if I remove the `-static`, and keep everything else unchanged, my
breakpoint never gets hit, and the program runs until completion:
The target architecture is assumed to be arm
Reading symbols from hello_world...done.
Remote debugging using localhost:1234
Reading symbols from
/usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3...(no debugging symbols
found)...done.
0xff7b3b80 in ?? () from
/usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3
Breakpoint 1 at 0x50c: file hello_world.c, line 5.
Continuing.
[Inferior 1 (Remote target) exited normally]
The executable itself does work fine however:
qemu-arm -L /usr/arm-linux-gnueabihf ./hello_world
prints:
hello world
I have seen:
https://stackoverflow.com/questions/20590155/how-to-single-step-arm-assembler-in-gdb-on-qemu
but it didn't cover the case of dynamically linked executables specifically.
Tested on Ubuntu 18.04, gdb-multiarch 8.1-0ubuntu3, gcc-arm-linux-gnueabihf
4:7.3.0-3ubuntu2, qemu-user 1:2.11+dfsg-1ubuntu7.3.
- [Qemu-discuss] How to GDB step debug a dynamically linked executable in QEMU user mode?,
Ciro Santilli <=