Hi-tech C51
Use the compiler to output a .COD or .LST file. These list files are invaluable—they show the C source code interleaved with the generated assembly. You can load these into an emulator like SDCC simulator (for logic analysis) or a hardware debugger like the Prolific based programmers.