मैं सिंक्रनाइज़ेशन ऑपरेशंस रिकॉर्ड करना चाहता हूं, जैसे लॉक, सेम्पहाहोर्स, मल्टीथ्रेडेड एप्लिकेशन की बाधाएं, ताकि मैं डिबगिंग के उद्देश्य के लिए बाद में रिकॉर्ड किए गए एप्लिकेशन को फिर से चला सकूं।मैं एक बहुप्रचारित एप्लिकेशन को कैसे चला सकता हूं?
रास्ते पर अपना खुद का लॉक, सेमफैफोर, हालत चर आदि प्रदान करना है .. कार्य जो लॉगिंग भी करते हैं, लेकिन मुझे लगता है कि यह एक ओवरकिल है, क्योंकि नीचे कुछ सामान्य सिंक्रनाइज़ेशन ऑपरेशंस का उपयोग करना चाहिए।
तो मेरा सवाल यह है कि सिंक्रनाइज़ेशन ऑपरेशंस मुझे लॉग इन करना चाहिए ताकि मुझे अपने कार्यक्रम में न्यूनतम संशोधन की आवश्यकता हो। दूसरे शब्दों में, ग्लिब और फ़ंक्शन में कौन से फ़ंक्शंस या मैक्रोज़ हैं, जिन पर इन सभी सिंक्रनाइज़ेशन ऑपरेशन बनाए गए हैं? ताकि मैं केवल लॉगिंग और रीप्लेइंग के लिए उनको संशोधित कर सकूं।
सभी सिंक्रनाइज़ेशन ऑपरेशंस को रिकॉर्ड करने से आप "रिकॉर्ड किए गए एप्लिकेशन को फिर से चलाने" की अनुमति दे सकते हैं? सिंक्रनाइज़ेशन ऑपरेशंस के क्रम की तुलना में प्रोग्राम के लिए बहुत कुछ है, खासकर यदि अनुपलब्ध सिंक्रनाइज़ेशन के कारण रेस-स्थितियां हैं (जो कि समस्या का भी प्रकार है जिसके लिए मुझे लगता है कि आप डिबगिंग सहायता चाहते हैं)। –
इस पल के लिए, दौड़ की स्थिति के बारे में भूल जाओ। मुझे पता है कि वे भी महत्वपूर्ण हैं। – pythonic
['स्ट्रेस (1)'] (http://linux.die.net/man/1/strace) उपयोगी हो सकता है, लेकिन यह सिंक्रनाइज़ेशन ऑपरेशंस को नहीं पकड़ पाएगा जो पूरी तरह से उपयोगकर्ता स्पेस में कर्नेल में संक्रमण किए बिना होता है, जैसे uncontested mutex ताले के रूप में। –