Just wanted to point out that PANDA actually doesn't need to know anything about the semantics of system calls, including ioctl. It builds on a whole-system emulator, and the things it records are hardware events (interrupts, memory mapped I/O, DMA, etc.). This is why you can record/replay Windows or any version of Linux without having to explicitly add support for those OSes.
Unfortunately we haven't implemented the gdb reverse debugging commands yet, so it's not as useful for debugging as it could be. Hopefully soon.