Rather than a dedicated ST/Link you might get one of the STM32 Discovery boards which include a ST/Link programmer in the package either as a snap-off module or embedded in the board with jumpers to disconnect it. It works as a dedicated programmer for other STM32-based boards. The kits run between $9-20 USD and sometimes can be had for even less.
Also look at Open On-Chip Debugger (openocd) for debugging.
And another thing, I’ve seen devices hang after flash despite issuing the usb reset in dfu-util. This was circa 2014 so make sure you have a current (better yet, build it from source git clone git://git.code.sf.net/p/dfu-util/dfu-util) version.
git clone git://git.code.sf.net/p/dfu-util/dfu-util
Thanks for the tips! I’ll look into the Discovery boards - I didn’t know about the added ST-Link, which makes their price a lot more appealing.
I am planning to do a post on openocd as soon as I figure out how to get STM32duino to produce something with debug symbols ;P
Check the Nucleo 64 (pdf) (snap off, also nominally Arduino compatible) and the Discovery models (embedded).