2012-09-05 10 views
20

विजुअल स्टूडियो 2010 एसपी 1, संकलित डब्ल्यूसीएफ ऐप, इसे सर्वर पर रखता है, और निश्चित रूप से इसे पहले रन (नया क्या है) पर एक त्रुटि मिली है, फाइल को लॉग करने के लिए स्टैक ट्रेस आउटपुट किया गया है।स्टैक ट्रेस मेरी विकास फ़ाइलों को पथ क्यों दिखाता है?

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

04/09/2012 03:58:46: Error: Object reference not set to an instance of an object. at App1.Logging.LogMessageToFile(String msg, Boolean isUsingClickOnceApp) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\Logging.cs:line 63 
    at App1.App1Main.ConnectWebService(String description) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\International.cs:line 40 
04/09/2012 03:58:46: Error: Object reference not set to an instance of an object. at App1.App1Main.UpdateActivityLog(String data, String userName, Boolean deleteData, Int64 firstId, Int64 lastId, String changeType) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\App1Main.cs:line 641 

धन्यवाद, -rob

+1

"क्या ऐसा इसलिए है क्योंकि मैंने इसे डीबग के रूप में तैनात किया है" –

+0

जैसे अमीर ने कहा, आप डीबग पथ देख रहे हैं क्योंकि इसे डीबग में संकलित किया गया है ... – Chris

+1

संभावित स्रोत के पथ को संरक्षित करने वाली स्टैकट्रस जानकारी [http://stackoverflow.com/questions/388470/stacktrace-information-preserving-paths-of-original-source) – Cocowalla

उत्तर

38

ऐसा इसलिए है क्योंकि आपने .pdb फ़ाइलों के साथ-साथ निष्पादन योग्य की प्रतिलिपि बनाई है। सीएलआर उनके लिए देखेगा जब यह ट्रेस में स्टैक फ्रेम के बारे में जितना संभव हो उतना जानकारी देने की कोशिश करने के लिए एक स्टैक ट्रेस उत्पन्न करता है। .pdb स्रोत फ़ाइल का नाम और लाइन नंबर संग्रहीत करता है।

आपको अपने कोड के रिलीज बिल्ड को तैनात करना होगा। यह ऑप्टिमाइज़ेशन को सक्षम बनाता है जो आपके कोड को बहुत तेज़ी से चला सकता है। आप अभी भी उस बिल्ड के लिए .pdb फ़ाइलों की प्रतिलिपि बना सकते हैं, वे आमतौर पर उस डीबग जानकारी को छीन लेते हैं। प्रोजेक्ट + प्रॉपर्टीज, रिलीज बिल्ड, बिल्ड, एडवांस्ड, "डीबग इन्फो" सेटिंग पर स्विच करें। रिलीज बिल्ड के लिए यहां सामान्य सेटिंग "पूर्ण" के बजाय "पीडीबी-केवल" है। जिसका अर्थ है कि स्रोत फ़ाइल और लाइन नंबर शामिल नहीं है। जो समझ में आता है, जिटर ने कोड को अनुकूलित करने के बाद स्टैक निशान थोड़ा अविश्वसनीय होते हैं।

+0

@ कोकोवाल्ला - दोनों महान उत्तर। गहराई से स्पष्टीकरण के लिए धन्यवाद दोस्तों। मुझे एहसास है कि मुझे रिलीज बिल्ड का उपयोग करना है, लेकिन यदि आप टीएफएस या एक निश्चित विकास जीवन चक्र का उपयोग नहीं करते हैं, तो आप उस मामूली तथ्य को भूल सकते हैं। ;-) –

3

के लिए मूल स्रोत फ़ाइल पथ PDB में संग्रहीत करने के लिए यह सामान्य है (program database) फ़ाइलें डिबग मोड में जब की तैनाती।

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