Direct access to grbl.
You can interact with grbl directly to isolate problems at the low level.
To do so, you need to use a terminal type program to issue commands and get responses from the serial port that has the Arduino attached.
Some of the programs are HyperTerminal, Putty, UGS (limited access), and the Serial Monitor in the Arduino IDE, among others.
Make sure that you have the correct settings for the program that you use.
The COM port where the Arduino is attached should have the baud rate set to 115200 (the default for grbl) and if the program you are using has port configuration boxes, set the baud rate to 115200 there as well (eg UGS, Arduino Serial Monitor).
If you use the Arduino IDE Serial Monitor program you have to have the Tools->Board set to "Arduino Uno" and the Tools->Port set to the COM port (eg COM1) where the Arduino is attached. Also in the Serial Monitor you need to change the end of line setting at the bottom of the screen from "No line ending" to "Newline". In the bottom right corner set the baud rate to 115200.
There are some commands that Universal G Code Sender wil not pass to grbl. UGS will not send a ? command to grbl. The ? command is useful for debugging homing switch issues.
If you successfully connect with grbl, grbl will display the current version number and wait for a command.
Use the $$ command to display the current grbl parameters.
Usefull information about the grbl parameters can be found here: https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9