मेरे पास एक बहु-थ्रेडेड एप्लिकेशन है जिसे मैं मूल रूप से क्यूटी 4.6 और क्यूटी निर्माता 2.2 (या संभवतः 2.1) का उपयोग करके विकसित कर रहा था, और हाल ही में मैंने क्यूटी 4.7 और क्यूटी निर्माता 2.3 में अपग्रेड किया (यह सब विंडोज़ में है)। मैं पहले विनाशकों में qCritical()
पर कॉल डाल कर अपने आवेदन में विभिन्न धागे और वस्तुओं के विनाश आदेश का परीक्षण कर रहा था। यह आसानी से पुष्टि करता है कि जिस क्रम में मुझे उम्मीद थी उसमें चीजें नष्ट हो रही थीं।एक विनाशक से बुलाए जाने पर qCritical या qDebug क्यों काम नहीं करेगा?
हालांकि, नए संस्करणों में अपग्रेड करने के बाद मैंने देखा कि संदेशों को हमेशा क्यूटी निर्माता में एप्लिकेशन आउटपुट पैनल में प्रदर्शित नहीं किया जाता है। संदेशों का क्रम हमेशा सही होता है, लेकिन कुछ यादृच्छिक बिंदु पर आउटपुट बस दिखाया जा रहा है। कभी-कभी कोई आउटपुट बिल्कुल नहीं दिखाया जाता है। फिर भी, मैं पुष्टि कर सकता हूं कि नष्ट हो रहे हैं और मेरा एप्लिकेशन बिना त्रुटि के बाहर निकलता है।
समस्या तब भी होती है जब मैं संदेश प्रदर्शित करने के लिए qDebug()
का उपयोग करता हूं, लेकिन अगर मैं इसके बजाय एक साधारण printf()
का उपयोग करता हूं तो सब कुछ ठीक दिखता है। एप्लिकेशन को साफ-सफाई पूरा करने से पहले एप्लिकेशन आउटपुट रोकने का कारण क्या हो सकता है? क्या क्यूटी या क्यूटी निर्माता के नवीनतम संस्करणों में बदलाव आया है जो कि एक विनाशक के अंदर से बुलाए जाने पर इन कार्यों का व्यवहार कैसे कर सकता है?
क्या आप अपना कोड जोड़ सकते हैं? यदि आप cmd.exe से एप्लिकेशन चलाते हैं तो वही बात होती है? –
@ Styne666: मैं कोड का एक छोटा सेगमेंट निकालने का प्रयास करूंगा जो समस्या को पुन: उत्पन्न करता है। इस तरह के पोस्ट करने के लिए बहुत अधिक है। – gnovice