Well I start with
Whenever I need to test something I make it global while I work on it and then make it local again afterwards. You cant enter joystick values without a joystick, you can however modify the variables that a joystick would modify. Like for example, a button could turn a mechanism on but really the button flips the variable intakeOn. In the debugger you can flip that as well.
A lot of the good high level debugging that I have done requires having the wireless programming cable, but if you have that, you can watch all of the sensors, motors, and variables in real time on a computer. This is potentially indispensable. Otherwise, LCD screens are nice for testing, and even a speaker. In the robotc compiler, under robot, you can open up debugging windows which will display values
Is it possible to set breakpoints in RobotC during debugging and then go straight to the breakpoint, step through the code line by line and inspect the value of variables (similar to MS Visual Studio)?