SharePoint Designer isn't the best at reporting errors, but there's a few tricks that help with the troubleshooting process.
- When there are odd errors that make no sense, click on the Information icon see image below.

This error log gives a good breakdown of the workflow errors and shows what's causing the problem.

This is great at identifying the wacky problems that break Designer workflows.
- Use the Log action in the workflow commands. I sprinkle these throughout the workflow, so I can see the sequence of actions taking place.
-
If you ever have an issue of workflows saving an item multiple times, make sure the Automatically update isn't selected in the workflow settings

- Similar to point 2. Start and finish with a Log command and use String Builder.

Notice that I'm stating the user who's running the workflow. This is useful with identifying permissions issues of how the workflow is being run.
- When creating local variables use sense names. See figure below:

With Strings, the variable starts with : str
Numbers: num
Date: d
For a seasoned developer this is obvious, but it doesn't always translate into SharePoint Designer variables.