You could perhaps build a microcode simulator and debug that. But debugging microcode on a running CPU would naturally be hard. Patching the microcode would also be really risky.
If I change normal code, it doesn't have ripple effects. It is isolated. Modification of microcode in a CPU is not isolated. Changing the microcode for an instruction will affect all programs using that instruction. This is much more like doing a firmware update. Just replacing a library is much easier and less risky.
A highly level ISA is a poor idea. That will lock you to a particular language. By using a very low level langauge such as assembly, you gain more flexibility in high-level languages you can build on top of that low level machine code.
I will admit there was some cool aspect with some of this thinking though such as the early LISP and Smalltalk machines which were basically built expliclty to run these languages.