Thanks @jh0. I found the hello_world_virtual_com demo. Unfortunately, I can't get communication working over the COM port that is enumerated in Windows Device Manager when I run the demo on the FRDM-K32L2B3 dev board.
The hello_world.c source code executes the following line
DbgConsole_Init((uint8_t)kSerialManager_UsbControllerKhci0, (uint32_t)NULL, kSerialPort_UsbCdc, (uint32_t)NULL);
The function prototype for this function is:
status_t DbgConsole_Init(uint8_t instance, uint32_t baudRate, serial_port_type_t device, uint32_t clkSrcFreq)
So it seems that the baudRate and clkSrcFreq aren't being properly configured. However, I've tried supplying 115200 and 48000000, respectively, but that also doesn't solve things.
The code execution appears to get stuck at
DEBUG_CONSOLE_TAKE_BINARY_SEMAPHORE_BLOCKING(s_debugConsoleReadWaitSemaphore);
which is executed by
status_t DbgConsole_ReadOneCharacter(uint8_t *ch)
which is part of the fsl_debug_console.c module.