मैं सी में एक पायथन कक्षा लिख रहा हूं और मैं अपने डीबग कोड में दावा करना चाहता हूं। assert.h
मुझे ठीक है। यह केवल डीबग संकलन में डाल दिया जाता है इसलिए पाइथन कोड * के उपयोगकर्ता को प्रभावित करने में असफल विफलता का कोई मौका नहीं है।मैं पायथन सी कोड से कैसे जोर दे सकता हूं?
मैं अपने 'पुस्तकालय' कोड (जो अजगर के खिलाफ जुड़े हुए कोड को अलग होना चाहिए) को विभाजित करने की कोशिश कर रहा हूँ तो मैं अन्य सी कोड से इसका इस्तेमाल कर सकते हैं। मेरे पाइथन विधियां इसलिए मेरे शुद्ध-सी कोड के चारों ओर पतली रैपर हैं। क्योंकि इस अजगर के साथ अपने शुद्ध सी कोड को प्रदूषित करता
if (black == white)
{
PyErr_SetString(PyExc_RuntimeError, "Remap failed");
}
:
तो मैं अपने 'पुस्तकालय' कोड में ऐसा नहीं कर सकते। यह भी एक सरल
assert(black != white);
मुझे विश्वास है कि distutils संकलक हमेशा NDEBUG
सेट, जिसका मतलब है मैं assert.h
उपयोग नहीं कर सकते और भी में डिबग बनाता है की तुलना में कहीं भद्दा है।
मैक ओएस और लिनक्स।
सहायता!
* एक तर्क मैं सी कोड अजगर से कहा जाता है में जोर देते हुए के खिलाफ सुना है।
है यही कारण है कि मैं क्या सुनना चाहते हैं! इसलिए, जब मैं 'python setup.py build' या' python setup.py build --debug 'चलाता हूं तो मुझे कुछ मिलता है:' gcc-4.2 -fno-hard-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -g -UDEBUG -I/लाइब्रेरी/फ्रेमवर्क/पायथन। फ्रेमवर्क/संस्करण/2.7/शामिल/python2.7 -c thing.c -o build/temp.macosx-10.6-intel -2.7/thing.o'। मैं एनडीईबीयूजी को कैसे हटाऊंगा? – Joe
@ जो: मैं देखता हूं; मेरा संपादन देखें। –
यह वास्तव में समस्या का समाधान नहीं करता है। यदि आप सभी मामलों में आवेषण सक्षम करना चाहते हैं तो अपने सभी उपयोगकर्ताओं को कस्टम बिल्ड कमांड का उपयोग करने के लिए यह एक अच्छा समाधान नहीं है।इसे किसी भी तरह से 'setup.py' में एक साफ तरीके से तय करने की आवश्यकता है। – Albert