The complex software product craves after stability while the complexity has a negative impact on both understanding of product structure by developers and the test coverage. The growth of functionality would naturally causes more rare bugs of unknown etymology. In order to keep the quality level you need to be prepared for them. Preparation supposes detailed diagnostics system that would be able to gather all useful information. Besides, it shouldn’t affect performance, it should be convenient for customers and it must be easy for support and development.
The virtualization products are one of most complex software for debugging. Our company has gone a long way to the diagnostics system that made possible the analysis of different kinds of errors we have faced. In this presentation I’d like to share our experience and show our path from a simple log toward a report system with automatic bug submission engine and dump creation mechanism. I will cover various diagnostics technologies we have used: logs, call traces, event traces, memory dumps, watchdogs, profilers, debugger and many others. Their evaluation would finalize the speech.
Author: Anna Vorobyeva
Core team lead developer, Parallels; MIPT lecturer
Anna is involved in the product since Parallels Workstation 2. She is the author of such complex features as a processor emulator, a space switcher and many others. She is the architect of memory management engine. After profound changes were made to the product code base, she as a lead developer with other team members has invested a huge amount of effort into increasing the stability to release the product of the premium quality.