backbone.ws

Remote debugging of win32-target on UNIX-like host using Gdbserver and Cgdb

The article describes a use-case of how can you remotely debug a win32-target process using Gdbserver and Cgdb in the comfortable UNIX-like OS/Shell and get STDOUT output from the target.

Assuming that you have gdbserver installed on the target and the executable compiled with debug symbols. Also we set that your host=192.168.1.1, target=192.168.1.2. For Gdbserver we are using port=5555, for STDOUT - port=7777.

Firstly, run in one of the host's terminals command to view output messages of the target:

Listen all messages from the target

user@host$ while [ 1 ]; do echo '--- NEW STDOUT CONNECTION ---'; socat STDOUT TCP4-LISTEN:7777; sleep 1; done

Secondly, run Gdbserver on the target:

Run Gdbserver

user@target$ gdbserver 192.168.1.2:5555 run/Application.exe --arg1=hello --arg2=world | socat TCP4:192.168.1.1:7777 STDIN

Finally, connect to the target using Cgdb, specifying executable with debug symbols and the source code dirs:

Cgdb

user@host$ cgdb -s Application.exe -d src -d test # or cgdb -s MyDLL.dll -d src -d test
(gdb) target remote 192.168.1.2:5555
(gdb) b main
(gdb) c