जब कोई Mac फ़ाइल वॉचर बदलावों को पकड़ नहीं पाता है, तो पहले यह निर्धारित करें कि क्या परिवर्तन उस फ़ोल्डर तक पहुँच रहा है जिसकी निगरानी की जा रही है, क्या एप्लिकेशन फ़ाइल सिस्टम इवेंट्स को देख पा रहा है, और क्या वह उन्हें फ़िल्टर कर रहा है या संसाधित करने में विफल हो रहा है। किसी छोटी, ज्ञात फ़ाइल में छूटे हुए एक बदलाव को पुनरुत्पादित (reproduce) करें, फिर उस परिणाम की तुलना बड़े प्रोजेक्ट की किसी फ़ाइल से करें। यह क्रम प्रोजेक्ट कॉन्फ़िगरेशन को इवेंट डिलीवरी और एप्लिकेशन प्रोसेसिंग से अलग करने में मदद करता है।
1. सटीक पाथ और बदलाव की पुष्टि करें
प्रभावित ऐप में, जांचें कि कौन सा फ़ोल्डर वर्कस्पेस के रूप में खुला है और पुष्टि करें कि संपादित फ़ाइल उस फ़ोल्डर के अंदर है। कोई फ़ाइल मॉनिटर किए जा रहे रूट के बाहर होते हुए भी एडिटर में दिखाई दे सकती है; सिम्बॉलिक लिंक (symbolic links) भी सामान्य नेस्टेड फ़ोल्डरों से अलग व्यवहार कर सकते हैं। उदाहरण के लिए, VS Code के दस्तावेज़ बताते हैं कि इसका macOS वॉचर FSEvents का उपयोग करता है, सिम्बॉलिक लिंक अपने आप फ़ॉलो नहीं किए जाते हैं, और इसकी वॉचर एक्सक्लूज़न सेटिंग पाथ को छोड़ सकती है। वे विवरण VS Code पर लागू होते हैं, हर Mac ऐप पर नहीं, इसलिए अपने टूल में इसके समकक्ष वर्कस्पेस और एक्सक्लूज़न सेटिंग्स की जांच करें। VS Code: File Watcher Issues
प्रोजेक्ट के ठीक अंदर मौजूद किसी फ़ाइल में एक साधारण संपादन सेव करें, फिर जांचें कि क्या एप्लिकेशन प्रतिक्रिया देता है। यदि केवल कोई जनरेट किया गया, अनदेखा (ignored), लिंक किया गया, या गहराई से नेस्टेड पाथ विफल होता है, तो इसे पूरे macOS की समस्या मानने से पहले उस पाथ के समावेश और वर्कस्पेस-रूट के साथ उसके संबंध की जांच करें। यदि प्रोजेक्ट किसी मैप किए गए नेटवर्क ड्राइव पर है या किसी तीसरे पक्ष के फ़ाइल सिस्टम का उपयोग करता है, तो Mac की स्थानीय डिस्क पर एक प्रतिलिपि का परीक्षण करें। VS Code चेतावनी देता है कि उन फ़ाइल सिस्टम्स द्वारा इवेंट्स उत्पन्न करने की गारंटी नहीं है; यह वातावरणों की तुलना करने का एक कारण है, इस बात का प्रमाण नहीं कि ऐसा प्रत्येक वॉल्यूम विफल ही होता है।
2. जांचें कि क्या एप्लिकेशन को इवेंट प्राप्त हुए हैं
फ़ाइल-सिस्टम सूचनाएं (notifications) हर व्यक्तिगत संपादन के लिए एक सटीक कॉलबैक का वादा नहीं होती हैं। Apple के FSEvents दस्तावेज़ कहते हैं कि इवेंट्स को संयोजित (coalesced) किया जा सकता है; जब MustScanSubDirs फ़्लैग सेट होता है, तो क्लाइंट को निर्दिष्ट डायरेक्टरी को पुनरावर्ती रूप से (recursively) फिर से स्कैन करना चाहिए। छूटे हुए इवेंट्स के फ़्लैग (dropped-event flags) बफ़रिंग समस्याओं का संकेत देते हैं और इसके लिए मॉनिटर की गई डायरेक्टरीज़ के पूर्ण स्कैन की आवश्यकता होती है। इसका मतलब है कि एक सही ढंग से काम करने वाले वॉचर को केवल सूचनाओं के सटीक क्रम पर निर्भर रहने के बजाय, डायरेक्टरी की वर्तमान सामग्री का मिलान करने की आवश्यकता होती है। Apple: Using the File System Events API, Apple: FSEventStreamEventFlags
जिस एप्लिकेशन में बदलाव छूट रहा है, उसमें वॉचर लॉग या डायग्नोस्टिक्स देखें। VS Code के मामले में, इसके दस्तावेज़ वर्बोज़ (verbose) फ़ाइल-वॉचर लॉगिंग को सक्षम करने और प्रासंगिक लॉग आउटपुट का निरीक्षण करने का वर्णन करते हैं। अन्य ऐप्स विभिन्न डायग्नोस्टिक्स दिखा सकते हैं या बिल्कुल भी नहीं। यदि लॉग छूटे हुए इवेंट्स, एक्सक्लूज़न, किसी पुराने रूट या वॉचर एरर की रिपोर्ट करता है, तो उस संदेश को सहेजें और ऐप के स्वयं के रिकवरी चरणों का पालन करें; वॉचर या ऐप को पुनरारंभ (restart) करना एक उपयोगी नियंत्रित तुलना हो सकती है, लेकिन यह अपने आप में अंतर्निहित कारण की पहचान नहीं करता है।
3. फ़ाइल सिस्टम गतिविधि का निरीक्षण करने के लिए fs_usage का उपयोग करें
macOS में fs_usage शामिल है, जो चल रही फ़ाइल सिस्टम से संबंधित सिस्टम-कॉल गतिविधि को प्रदर्शित करता है। यह स्थापित करने में मदद कर सकता है कि क्या संबंधित एप्लिकेशन रीप्रोडक्शन के दौरान फ़ाइलों को छू रहा है, लेकिन यह कोई FSEvents इवेंट व्यूअर नहीं है और यह साबित नहीं कर सकता कि वॉचर को कोई सूचना प्राप्त हुई या उसने उसे संसाधित किया। Apple नोट करता है कि एक्सेस नियंत्रण लागू होते हैं और रूट एक्सेस की आवश्यकता हो सकती है। Apple: Examining File-System Usage
Terminal में, निर्दिष्ट एप्लिकेशन का अवलोकन करते हुए समस्या को पुनरुत्पादित करें। YourApp के स्थान पर उसका वास्तविक प्रोसेस नाम लिखें (उदाहरण के लिए, किसी ऐप का प्रोसेस नाम उसके डिस्प्ले नाम से भिन्न हो सकता है):
sudo fs_usage -w YourApp
संक्षिप्त रीप्रोडक्शन के बाद Control-C दबाकर लाइव डिस्प्ले को रोकें। आउटपुट व्यस्त (बहुत अधिक) हो सकता है, इसलिए संपादन के समय और प्रासंगिक पाथ पर ध्यान केंद्रित करें। यदि प्रोसेस का नाम अनिश्चित है, तो एप्लिकेशन के दस्तावेज़ या Activity Monitor से परामर्श करें; यह न मान लें कि अनुमानित नाम से फ़िल्टर करने पर सही प्रोसेस दिखाई देगी। fs_usage फ़ाइल गतिविधि के लिए एक डायग्नोस्टिक सहायता है, न कि वॉचर को रीसेट या मरम्मत करने का कोई कमांड।
4. स्केल और एक्सेस की शर्तों की तुलना करें
उसी संपादन को एक छोटे स्थानीय परीक्षण फ़ोल्डर में दोहराएं जिसे ऐप मॉनिटर कर सकता है। यदि वह काम करता है जबकि बड़ा प्रोजेक्ट विफल हो जाता है, तो प्रोजेक्ट-विशिष्ट एक्सक्लूज़न, सिम्लिंक्स, जनरेट की गई डायरेक्टरीज़ और किसी भी रिमोट या प्रदाता-समर्थित पाथ की तुलना करें। बड़े ट्रीज़ इवेंट हैंडलिंग और रीस्कैनिंग दोनों के लिए अधिक काम पैदा करते हैं; Apple का मार्गदर्शन स्पष्ट करता है कि सूचनाओं के लिए पुनरावर्ती स्कैन की आवश्यकता हो सकती है, जबकि एप्लिकेशन यह तय करता है कि उस कार्य को कैसे संभालना है। केवल आकार का संबंध ऑपरेटिंग-सिस्टम इवेंट-कतार सीमा स्थापित नहीं करता है।
जांचें कि क्या प्रभावित ऐप प्रोजेक्ट स्थान तक पहुँच सकता है। macOS गोपनीयता नियंत्रण और App Sandbox नियम फ़ोल्डरों तक पहुंच को प्रतिबंधित कर सकते हैं, और Apple दस्तावेज़ बताता है कि सुरक्षित स्थानों तक पहुंच के लिए System Settings में उपयोगकर्ता प्राधिकरण की आवश्यकता हो सकती है। System Settings > Privacy & Security के तहत ऐप की अनुमति स्थिति की समीक्षा करें, और केवल कार्य के लिए आवश्यक एक्सेस प्रदान करें। एक अनुमति समस्या उपयोगी फ़ाइल पहुंच को रोक सकती है भले ही पाथ ऐप में दिखाई देता हो। Apple: Accessing Files from the macOS App Sandbox
5. साक्ष्यों के आधार पर अगला कदम चुनें
यदि छोटा स्थानीय फ़ोल्डर काम करता है, तो ऐप डेवलपर को प्रोजेक्ट स्थान के प्रकार, प्रभावित पाथ पैटर्न, प्रासंगिक वॉचर लॉग और क्या कोई सिम्लिंक या एक्सक्लूज़न शामिल है, के साथ एक न्यूनतम रीप्रोडक्शन भेजें। यदि छोटे और बड़े दोनों स्थानीय फ़ोल्डर विफल हो जाते हैं, तो ऐप को अपडेट करें और इसके macOS-संस्करण-विशिष्ट समस्या ट्रैकर या सहायता मार्गदर्शन की जांच करें; macOS संस्करण और ऐप संस्करण की रिपोर्ट करें। एक काल्पनिक समाधान के रूप में प्रोजेक्ट डेटा को हटाने या सिस्टम सुरक्षा सेटिंग्स को बदलने से बचें। उपयोगी निदान सबसे संकीर्ण पुनरुत्पादन योग्य स्थिति है: एक ऐप, एक पाथ, एक संपादन और एक अवलोकनीय विफलता।
स्रोत
Using the File System Events API — Apple Developer
FSEventStreamEventFlags — Apple Developer
Examining File-System Usage — Apple Developer
Accessing Files from the macOS App Sandbox — Apple Developer
File Watcher Issues — Microsoft GitHub