I think you can do it with qemu and gdb.
Unless the other os and debugger mentioned has an easy way to do it with a machine that's not virtualized?