The most basic is, of course, printf debugging to a console or logging service.  You could also connect over a network socket and inspect the current state of the unikernel, or do any sort of debugging things.  This sounds the same as remote debugging now, the only difference is that the debugger agent would have to be implemented as a library (or hypervisor feature) rather than as a separate process.  Erlang is supposedly fancy enough that you can do this sort of stuff with just the builtin tools.<p>It also seems like you could debug the unikernel like any other process if you run it as a VM on your machine.  Except of course you can run any, say, x64 unikernel, instead of only programs built for your OS.