The default console in launch.json is integratedTerminal which is works fine in most cases.

But it might stuck when your program encounter some warnings.

All things are fixed after I change console to integratedConsole. But still don’t know the different between these two parameters.