2012-07-24 13 views
57

का प्रदर्शन मैं डेल्फी एक्सई 2 (अपडेट # 4) और विंडोज एक्सपी लक्ष्य के बीच एक बड़ा ऐप रिमोट डिबग कर रहा हूं। PAServer लक्ष्य पर चल रहा है और एप्लिकेशन ठीक काम करता है और ब्रेकपॉइंट्स पर रुक जाता है (आप विश्वास नहीं करेंगे कि यह उपलब्धि कितनी मुश्किल थी - संकेत - अपने डीपीआरओजे को हटाएं और फिर से शुरू करें यदि यह XE से पहले किसी भी आईडीई के माध्यम से हो)।एक्सई 2 के साथ रिमोट डीबगिंग - स्ट्रिंग्स

मुझे पता है कि स्थानीय चर और घड़ियों का प्रदर्शन 'स्ट्रिंग' प्रारूप के सामान्य प्रदर्शन की तुलना में एक अजीब प्रारूप में दिखाता है जो स्थानीय रूप से डिबगिंग करते समय देखता है। मैं देख रहा हूँ:

enter image description here

किसी को भी मुझे बता सकते हैं क्यों तार इस तरह से प्रदर्शित किए जाते हैं? मुझे आउटपुट चर पर {} के बीच {NULL} और कचरा भी मिलता है जिसे अभी तक असाइन नहीं किया गया है। धन्यवाद।

। मैं देखता हूं कि यह प्रारूप व्यापक तारों को इंगित करता है। मैंने विंडोज 7 पर एक साधारण ऐप की कोशिश की और निम्नलिखित परिणाम प्राप्त हुए। एक ब्रेकप्वाइंट पर मेरे अनुप्रयोग:

enter image description here

नोट छोटा कर दिया 'हैलो':

enter image description here

स्थानीय स्ट्रिंग चर का प्रदर्शन किया। ऐसा लगता है कि XE2 को कभी-कभी रिमोट यूनिकोड तारों में समस्या होती है। मेरा PaServer संस्करण 1.0.2 है। क्या कोई यह जांच सकता है कि यह नवीनतम है? 'अपडेट # 4 से लिया गया ...

+7

मेरा अनुमान है कि आप कुछ में चला रहे हैं आप गुणवत्ता की सेंट्रल पर लॉग ऑन करना चाहते हैं, और मैं किसी भी शक केवल अंतिम उपयोगकर्ता आपके लिए इसे ठीक कर सकता है। कोशिश करने के लिए पर्याप्त बहादुर होने के लिए उपरोक्त। –

+0

आपकी रिमोट प्रोफाइल कैसा दिखता है? क्या आपको दूरस्थ सर्वर पर पीए इंस्टॉल करने में कोई समस्या है? रिमोट सर्वर पूरी तरह से पैच और अद्यतित है? क्या होता है जब आप स्थानीय चर दृश्य में S2 का विस्तार करते हैं? – Daisetsu

+0

@ डेसेट्सू: दूरस्थ प्रोफ़ाइल किसी अन्य आईपी सिस्टम के लिए बहुत बुनियादी है। कोई अन्य इंस्टॉलर मुद्दे नहीं। मैं वैरिएबल को मेमोरी डंप में विस्तारित करने का प्रयास करूंगा और देखें कि क्या होता है। –

उत्तर

1

मुझे यकीन नहीं है कि यह संबंधित है, लेकिन मुझे सिस्टम के बारे में पता है। एन्सीस्ट्रिंग्स जिनमें "फॉर्मेट" जैसे विशेष आदेश शामिल हैं ... आदि जैसे कुछ का उपयोग करना हल हो सकता है आपकी समस्या:

var 
    S1: AnsiString; 
    S2: UnicodeString; 
begin 
    S1 := 'Foo'; 
    S2 := 'Bar'; 
    ShowMessage(Format('%s!', S2)); 
end; 

इसके अलावा वहां कुछ खुला कीड़े सिर्फ उन में से किसी को हटाने के लिए, क्या विशिष्ट ओएस के संस्करणों और उपकरणों आप यानी Win7 x64 अंतिम आदि का उपयोग कर रहे हैं?

+0

दिलचस्प, बीमार एक नज़र डालें। धन्यवाद। –

3

(मैं @Dave से कोड को कॉपी कर रहा हूँ)

var 
    S1: AnsiString; 
    S2: UnicodeString; 
begin 
    S1 := 'Foo'; 
    S2 := 'Bar'; 
    ShowMessage(Format('%s!', S2)); 
end; 

मैं स्थानीय वर एस 1 यहाँ अनुमान लगा रहा हूँ अनुकूलित है क्योंकि यह कहीं भी नहीं किया जाता है, इसलिए मूल्य अब relvant नहीं है।

इसे स्थानीय मशीन पर चलाने का प्रयास करें, क्या आप एस 1 देख सकते हैं?

4

मुझे पूरी तरह से यकीन नहीं है कि आपके पास स्ट्रिंग मानों के आसपास {} क्यों है, - मेरा हल यह है कि यह प्रदर्शित करना है कि मूल्य दूरस्थ निष्पादन से आ रहे हैं - लेकिन मुझे पता है कि S है अनुकूलन के कारण छोटा कर दिया ...

{$O-} // Disable Optimization 
var 
    S: AnsiString; 
    S2: UnicodeString; 
begin 
    S := 'Hello'; 
    S2 := 'Hello2'; 
    ShowMessage(S2); 
end; 
{$O+} // Enable Optimization 

अब आप ध्यान दें हूँ कि मान 'हैलो' (चर S का) बरकरार जब डिबगिंग बनी हुई है। इसी तरह अगर आप S करने के लिए सौंपा मूल्य का इस्तेमाल करते हैं:

var 
    S: AnsiString; 
    S2: UnicodeString; 
begin 
    S := 'Hello'; 
    S2 := 'Hello2'; 
    ShowMessage(S + S2); 
end; 

डेल्फी के अनुकूलन अब पहचान करती है S अपने वैध दायरे के भीतर इस्तेमाल किया जा रहा है, और इसलिए मूल्य संरक्षित है।

तो, आप जो "बग" कह रहे हैं वास्तव में एक "कंपाइलर सुविधा" वास्तव में बोरलैंड/इनपीर/कोडेगियर/एम्बरकाडेरो के इरादे से है।

0

परियोजना -> विकल्प -> डेल्फी संकलक -> लिंक करना -> दूरस्थ डिबग प्रतीक शामिल = सच

संबंधित मुद्दे