2011-10-20 17 views
6

से एक अलग समय के साथ एक प्रोग्राम चलाएं मै मैकॉक्स, में एक प्रोग्राम डिबग कर रहा हूं और मुझे यह आवश्यक है कि यह प्रोग्राम सोचता है कि हम ऑपरेटिंग सिस्टम द्वारा दिए गए एक वर्ष बाद हैं।डीबग, यूनिक्स। सिस्टम

मैं ऑपरेशन सिस्टम का समय नहीं बदल सकता, क्योंकि मुझे सही समय के साथ एक दूसरे कार्यक्रम को चलाने की आवश्यकता है। मैं ऑपरेशन सिस्टम से प्रत्येक बार एक बार जोड़ने के लिए पहले प्रोग्राम के कोड को संशोधित कर सकता हूं, लेकिन कोड ऐसा करने के लिए बहुत बड़ा है; मैं इस समाधान का उपयोग नहीं करना पसंद करता हूं।

मैंने एक बार सुना है कि नकली/नकली समय के साथ प्रोग्राम चलाने के लिए यूनिक्स में एक आदेश है। क्या आप इसके बारे में जानते हैं?

+1

हैं सब कुछ विफल हो जाता है, आप इसे वर्चुअल वातावरण के अंदर चला सकते हैं और उसमें समय निर्धारित कर सकते हैं। अंतिम उपाय हालांकि, यह भारी ओवरकिल है। –

उत्तर

4

मैंने कोशिश नहीं की है, लेकिन libfaketime आपको जो चाहिए वह करने का दावा करता है।

वेबसाइट से उद्धरित:

एक उदाहरण के रूप में, हम "तिथि" कमांड हमारे नाटक समय रिपोर्ट करना चाहते हैं। lib काम करता है यह मानते हुए के रूप में विज्ञापित

[email protected]> date 
Tue Nov 23 12:01:05 CEST 2007 

[email protected]> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date 
Mon Nov 8 12:01:12 CEST 2007 

सोच यह एक वर्ष चल रहा था आगे का उपयोग करते हुए आप अपने कार्यक्रम को झांसा देकर कर सकते हैं,: ऐसा करने के लिए, हम निम्नलिखित कमांड लाइन का उपयोग कर सकते

LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="+1y" ./your_program 
+1

मैक ओएस एक्स एक अलग लिंकर का उपयोग करता है, मुझे नहीं लगता कि पर्यावरण चर समान है। DYLD_INSERT_LIBRARIES आज़माएं। – unwind

+0

@unwind अच्छा बिंदु !! –