Designers, please consider the users. Make life easy for them to collect diagnostic data the first time the problem occurs. Automation is best, but an easy non-automated system or set of commands will work as well. Be sure the methods are documented in user manuals, online, in support documents, and anywhere else your system documentation is stored. Be aware of the behavior of your support organization. Do the engineers there routinely request that the problem be reproduced, without even trying to debug it with available data? Have you described what available data is?
You have a lot of choices of features for first fault problem solving: dumps, traces, scripts, error messaging, error codes, performance monitors.
Ensure the process ...