2010-01-26 27 views
16

में बिल्ड मशीन के फ़ाइल पथ न दिखाएं मैं वर्तमान में एक सी # एप्लिकेशन विकसित कर रहा हूं जिसकी इसे स्वयं लॉगिंग मिली है। जब अपवाद फेंक दिए जाते हैं, अपवाद को एक सूची में सहेजा जाता है जिसे उपयोगकर्ता द्वारा सूची दृश्य के माध्यम से देखा जा सकता है। जब उपयोगकर्ता सूची दृश्य में अपवाद पर क्लिक करता है, तो अपवाद का स्टैक ट्रेस टेक्स्ट बॉक्स में दिखाया जाता है। लेकिन जब भी मैं रिमोट मशीन पर प्रोग्राम निष्पादित कर रहा हूं, तब भी स्टैक ट्रेस उस फ़ाइल से मूल स्रोत फ़ाइलों में फ़ाइल पथ दिखाती है जहां एप्लिकेशन संकलित किया गया था।स्टैक ट्रेस

उदा .:

at C:\Folder1\Folder2\Class1.cs:81 
at C:\Folder1\Folder2\Class2.cs:65 
at C:\Folder1\Folder1\Class3.cs:21 

केवल फ़ोल्डरों बिना स्रोत फ़ाइलें प्रदर्शित अच्छा होगा ...

मैं इस व्यवहार को कैसे बदल सकता हूँ?

क्या कोई मूल समाधान है? या मुझे बस कुछ स्ट्रिंग मैनिपुलेशन करना है?

+0

आपका लॉगिंग कोड कैसा दिखता है? – ChrisF

+0

बस रेगेक्स अभिव्यक्ति के साथ पथ फ़िल्टर करें। या पथ। गेटफाइलनाम()। –

उत्तर

18

आपके पास शायद इंस्टॉल किए गए ऐप के साथ .pdb फ़ाइलें हैं। .pdb फ़ाइलों के बिना, यह फ़ाइल स्थानों को नहीं दिखाना चाहिए।

आप अपने आवेदन से लाइन संख्या सीधे के साथ एक स्टैक ट्रेस नहीं मिल सकता है जब तक कि आप PDB बंडल Getting line numbers in exception stack trace in a Windows Service

और include line numbers in stack trace without pdb?

पर एक नज़र डालें।

+0

धन्यवाद =)। यह इस तरह से काम किया। – Emiswelt

5

फ़ाइल पथ "program database" फ़ाइलें (.pdb) में शामिल हैं। ऐसी फाइलें इन फ़ाइलों में संकलन और पथ के दौरान बनाई गई हैं संकलन मशीन पर हैं।

आप अपनी स्थापना से .pdb फ़ाइलों को हटा सकते हैं, लेकिन इस तरह आपका स्टैक ट्रेस अब जितना दिलचस्प हो उतना आधा होगा, क्योंकि यह आपको उस पंक्ति को नहीं बताएगा जिस पर त्रुटि हुई थी। आम तौर पर, आप पीडीबी फाइलों के साथ उत्पादन वातावरण में कोड नहीं चलाते हैं।

यदि आप "रोचक स्टैक ट्रेस" रखना चाहते हैं, तो आप exceptionObject.toString() कहने के बाद फ़ोल्डर नामों का एक स्ट्रिंग प्रतिस्थापन करने पर विचार कर सकते हैं।

+0

धन्यवाद =)। यह इस तरह से काम किया। – Emiswelt

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