I am pretty new to Eclipse. Trying to set up to do remote debugging.
Here is situation, I am connecting to remote machine running Linux, I am running Windows.
1) I have installed all the necessary tool for Eclipse, and was able to connect to Linux machine.
2) Remote machine has gdbserver
linux1[1]% gdbserver
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...]
gdbserver [OPTIONS] --attach COMM PID
gdbserver [OPTIONS] --multi COMM
COMM may either be a tty device (for serial debugging), or
HOST:PORT to listen for a TCP connection.
Options:
--debug Enable debugging output.
Do I need to configure anything in gdbserver
???
3) What else should I configure in Eclipse ? for remote debugging ?
4) Does it matter that my GDB version is different from remote Machine GDB ?
05 On the General settings panel, under Debugging, select Off next to Remote debugging setting to disable remote debugging using Microsoft Visual Studio for the selected Azure App Services web application. Click Save to apply the changes.
Set up the remote debugger on Windows ServerOn the remote computer, find and start the Remote Debugger from the Start menu. If you don't have administrative permissions on the remote computer, right-click the Remote Debugger app and select Run as administrator. Otherwise, just start it normally.
CLI sanity check
Before you do anything, make sure you:
This answer supposes that you can do on the development board:
sudo apt-get install gdbserver
gdbserver :1234 path/to/executable
And on host:
aarch64-linux-gnu-gdb \
-ex "target remote board-hostname:1234" \
-ex "file path/to/cross/compiled/executable" \
-ex 'tb main' \
-ex c
and then step debug everything correctly.
Eclipse setup
Tested in Ubuntu 16.04 host, Eclipse Oxygen 4.7.0 (downloaded from website), gdbserver
7.12, aarch64-linux-gnu-gdb
7.6.
I have successfully used all of the following methods:
Manual
With this method, we have to launch gdbserver
on the target before running debug on Eclipse.
Pro: dispenses configuring SSH connections through Eclipse to allow Eclipse to run gdbserver
, which is another possible point of failure.
Con: you have to relaunch gdbserver
every time debugging starts. This could be overcome if Eclipse understood gdbserver --multi
, but I don't think it does?
Due to its simplicity, I recommend that you get this method working first.
Open the debug configurations, then create a new "C / C++ Remote Application".
Under the tab "Main":
select the "Name", "Project" and "C/C++ Application" as usual for a local debug
at the bottom launcher, click "Select other", check "Use configuration specific settings" and pick "GDB (DSF) Manual Remote Debugging Launcher"
Why we do this: the automatic launcher first connects to the board with SSH and launches the gdbserver
for you.
Under the tab "Debugger":
"GDB debugger": same as used from CLI on host, aarch64-linux-gnu-gdb
for this example
Sub-tab "Connection": set hostname and port as passed to the host on CLI (board-hostname
and 1234
)
Finally, manually launch gdbserver
on the target just as we did from the CLI:
gdbserver :1234 path/to/executable
and start the debugger from Eclipse normally.
You have to restart gdbserver
every time you terminate the program.
Automatic with password auth
This is the best method for development boards, which have fixed publicly known passwords.
It connects to the target with SSH and a password, and launches gdbserver
on the target automatically every time, which is super convenient!
Target gdbserver
stdout goes to the Eclipse "Console" window, which further reduces window switching.
In Eclipse set:
/root/path/to/project/path/to/executable
Automatic with public key
Very similar to the password authentication, except that you must go to: "Connection", "New", and choose "Public key based authentication"
Pros:
Cons:
so I would prefer this method for servers.
SSH can connect without a password if you:
~/.ssh/authorized_keys
on the target to contain the ~/.ssh/id_rsa.pub
from the hostBefore using this method, make sure that your authorized keys work from the command line, i.e. you should now be able to do:
ssh user@host
without typing any password.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With