2009-03-14 16 views
12

अगर मैं डीबग दुभाषिया (यानी python_ex.exe की बजाय python_d.exe) द्वारा चलाया जा रहा है, तो मैं अपनी पायथन स्क्रिप्ट में कैसे पता लगा सकता हूं? मुझे कुछ डीएलएस में पथ बदलने की ज़रूरत है जो मैं एक एक्सटेंशन में पास करता हूं।पायथन: डीबग दुभाषिया का पता लगाने के लिए कैसे करें

जैसे ईद मेरे अजगर स्क्रिप्ट के शुरू में कुछ इस तरह करना पसंद:

#get paths to graphics dlls 
if debug_build: 
    d3d9Path = "bin\\debug\\direct3d9.dll" 
    d3d10Path = "bin\\debug\\direct3d10.dll" 
    openGLPath = "bin\\debug\\openGL2.dll" 
else: 
    d3d9Path = "bin\\direct3d9.dll" 
    d3d10Path = "bin\\direct3d10.dll" 
    openGLPath = "bin\\openGL2.dll" 

मैं विस्तार करने के लिए एक "IsDebug()" विधि जो सच वापसी होगी जोड़ने के बारे में सोचा था कि अगर यह डिबग है निर्माण (यानी "# डेफिन डेबग" के साथ बनाया गया था) और अन्यथा झूठा। लेकिन इस लगती है somthing इम यकीन है कि मैं अजगर मुझे बताने की प्राप्त कर सकते हैं के लिए एक हैक का एक सा ...

+1

आप कच्चे तार का उपयोग कर अतिरिक्त एस्केपिंग से बचने के लिए माना जाता है? r'bin \ डिबग \ direct3d9.dll ' – cdleary

उत्तर

14

Distutils use sys.gettotalrefcount to detect a debug python build:

# ... 
if hasattr(sys, 'gettotalrefcount'): 
    plat_specifier += '-pydebug' 
  • यह विधि निष्पादन योग्य नाम '*_d.exe' पर भरोसा नहीं करती है। यह किसी भी नाम के लिए काम करता है।
  • यह विधि क्रॉस-प्लेटफ़ॉर्म है। यह '_d.pyd' प्रत्यय पर निर्भर नहीं है।

Debugging Builds देखें और Misc/SpecialBuilds.txt

2

एक आसान तरीका है, तो आप फ़ाइल नाम पर निर्भर करता है, तो कोई आपत्ति नहीं है:

if sys.executable.endswith("_d.exe"): 
    print "running on debug interpreter" 

आप sys मॉड्यूल और इसकी विभिन्न सुविधाओं here के बारे में अधिक पढ़ सकते हैं।

3

बेहतर है, क्योंकि यह भी काम करता है जब आप चल रहे हैं एक एम्बेडेड पायथन दुभाषिया

imp.get_suffixes() 

की वापसी मान की जाँच करने के लिए एक डिबग के लिए निर्माण यह एक टपल '_d.pyd' के साथ शुरू होता है:

# debug build: 
[('_d.pyd', 'rb', 3), ('.py', 'U', 1), ('.pyw', 'U', 1), ('.pyc', 'rb', 2)] 

# release build: 
[('.pyd', 'rb', 3), ('.py', 'U', 1), ('.pyw', 'U', 1), ('.pyc', 'rb', 2)] 
संबंधित मुद्दे