हमारे पास एक कोडबेस है जो कई साल पुराना है, और सभी मूल डेवलपर लंबे समय से चले गए हैं। यह कई, कई धागे का उपयोग करता है, लेकिन कोई स्पष्ट डिजाइन या सामान्य वास्तुशिल्प सिद्धांतों के साथ। प्रत्येक डेवलपर की मल्टीथ्रेड प्रोग्रामिंग की अपनी शैली थी, इसलिए कुछ धागे कतारों का उपयोग करके एक-दूसरे के साथ संवाद करते हैं, म्यूटेक्स के साथ कुछ लॉक डेटा, सेफफोर्स के साथ कुछ लॉक, कुछ इंट्रा-प्रोसेस संचार के लिए ऑपरेटिंग सिस्टम आईपीसी तंत्र का उपयोग करते हैं। कोई डिज़ाइन दस्तावेज नहीं है, और टिप्पणियां स्पैस हैं। यह एक गड़बड़ है, और ऐसा लगता है कि जब भी हम कोड को दोबारा करने या नई कार्यक्षमता जोड़ने की कोशिश करते हैं, तो हम डेडलॉक्स या अन्य समस्याओं का परिचय देते हैं।
तो, क्या किसी को किसी भी उपकरण या तकनीकों के बारे में पता है जो थ्रेड के बीच सभी इंटरैक्शन का विश्लेषण और दस्तावेज करने में मदद करेंगे? एफडब्ल्यूआईडब्ल्यू, कोडबेस सी ++ लिनक्स पर है, लेकिन मुझे अन्य वातावरण के लिए टूल के बारे में सुनने में दिलचस्पी होगी।
अद्यतन करें
मैं अब तक प्राप्त प्रतिक्रियाओं की सराहना करता हूं, लेकिन मैं सलाह की तुलना में कुछ अधिक परिष्कृत या व्यवस्थित करने की उम्मीद कर रहा था, जो अनिवार्य रूप से "लॉग संदेश जोड़ें, पता लगाएं कि क्या हो रहा है, और इसे ठीक करें।" एकल-थ्रेडेड प्रोग्राम्स में नियंत्रण-प्रवाह का विश्लेषण और दस्तावेज़ीकरण करने के लिए वहां बहुत सारे टूल हैं; क्या बहु-थ्रेडेड कार्यक्रमों के लिए कुछ भी उपलब्ध नहीं है?
See also Debugging multithreaded applications