For example, company that uses our software suddenly has found a serious bug and can't continue to work. The bug has exposed a big problem in software design and fixing it will take few days. What is the best approach to solve such problems? What developers should do: start to rewrite code to fix the bug, writing a quick hotfix first, etc?
Your first priority should always be enabling your company to continue doing business. In this case, you should deliver a hot fix to this client ASAP.
The immediate reaction should be to work around the clock to get them past the business-halting bug that was intially causing this. Then once that is fixed, start working on the permanent fix to the bug (often times the first aforementioned step).
If only it stopped there! Then you need to find out why that bug got through QA. Bugs will always get through whatever form of QA you have (whether it's just you, or all the developers, or a separate quality assurance team). But production/business-halting bugs surely should not have got through any form of quality testing.