WinDBG Tutorial - Part 3

Just short piece of information about Remote Debugging.

Remote Debugging actually means connecting the debugger on one computer to a process on another computer.

Typical scenario: PC 1 has a program that needs to be debugged. PC 2 does the debugging.

Advantages:

- PC 1 might not have symbols and sources for debugging (e.g. PC 1 is user of application, PC 2 is application vendor)

- PC 1 can be installed in a virtual machine

- PC 2 can debug kernel crashes

There are multiple ways of connecting the two PCs (which is normal, as multiple transport protocols are supported), but here is a quick-start for the most typical: via TCP/IP.

Steps:

1. Setup PC 1 as debugging Server:

If the WinDBG is already started on PC 1, open the Command window and write:

.server tcp:port=4001

If WinDBG is not opened, start it from the command prompt with the options:

               \:>Windbg.exe -server tcp:port=4001

2. Connect PC 2 to PC 1:

Open WinDBG from command prompt with arguments:

               \:>Windbg.exe windbg.exe -remote tcp:server=\\157.58.253.236,port=4001

Note: The value written in red are only examples. The IP address has to be the one of PC 1 and the port should be one of the free ports of PC 1.

3. Attach the debugger on PC 1 to a process, open a Dump or whatever. When a debugger is attached on PC 1, PC 2 will be able to debug that process as if it were a local process.

This is only one of the numerous ways of doing remote debugging. There is always the Help -> Search option in WinDBG that you can check for advanced options.

remoteDBG.png