Let me explain this a bit further. Assume you have two boards that must communicate with each other and you want them to debug simultaneously. You could create two shell (batch) files ( Windows and Linux the same approach) which will launch a GDB server on a dedicated tcp port for a dedicated USB interface with that serial.
Target 1 shell file: eblink -I stlink,serial=0671FF353567A2425E231318 -G port=1001
Target 2 shell file: eblink -I stlink,serial=024238672632A2425E231318 -G port=1002
Now you can open 2 IDE projects and hook every project on his own TCP port to debug.
This is not only for debugging but also for flashing or automated testing. E.g. if you are in a production environment and you want to flash products on multiple devices simultaneously from the same machine, just start the particular flash location by it's USB serial number.
The sky is the limit.
Target 1 shell file: eblink -I stlink,serial=0671FF353567A2425E231318 -G port=1001
Target 2 shell file: eblink -I stlink,serial=024238672632A2425E231318 -G port=1002
Now you can open 2 IDE projects and hook every project on his own TCP port to debug.
This is not only for debugging but also for flashing or automated testing. E.g. if you are in a production environment and you want to flash products on multiple devices simultaneously from the same machine, just start the particular flash location by it's USB serial number.
The sky is the limit.