1. A system for debugging motion control software used to communicate with a motion control system, comprising: a set of hardware motion control attributes used for motion control, where at least one hardware motion control attribute is a primitive hardware motion control attribute used for motion control that cannot be emulated using at least one other hardware motion control attribute, and at least one hardware motion control attribute is a non-primitive hardware motion control attribute that can be emulated using at least one other primitive hardware motion control attribute; a set of common motion control attributes; a motion control device capable of storing at least one primitive hardware motion control attribute; a set of software drivers, where at least one software driver is capable of causing debug information to be sent to a debug target, where the debug information contains diagnostic information associated with at least one hardware motion control attribute; at least one selected software driver selected from the set of software drivers, where the selected software driver is capable of converting at least one common motion control attribute to at least one hardware motion control attribute; a software application that calls at least one motion component function to exchange at least one common motion control attribute with the at least one selected software driver; and at least one called motion component function is called to cause a motion component to exchange at least one common motion control attribute with the at least one selected software driver by calling at least one software driver function; and at least one called software driver function causes the selected software driver to convert at least one common motion control attribute to at least one hardware motion control attribute, exchange at least one hardware motion control attribute with the motion control device, and cause debug information to be sent to the debug target.