2013-08-01 11 views
15

मैं विजुअल स्टूडियो 2012, .NET 4. के साथ एक एएसपी.NET वेब-एप्लिकेशन को इंस्ट्रूमेंट करने का प्रयास कर रहा हूं। समाधान में एक वेब-एप्लिकेशन और क्लास लाइब्रेरी है। समस्या मैं वर्ग पुस्तकालय में कदम नहीं देख सकता है, मैं यह संदेश मिलता है मिलती है:विजुअल स्टूडियो प्रदर्शन प्रोफाइलिंग - क्लास लाइब्रेरी प्रतीकों को नहीं मिला

Matching symbols could not be found. Choose the 'Symbol Settings...' link to add the symbol file location and then reload the report. 

उत्पादन जबकि रूपरेखा हालांकि अच्छा लग रहा है:

Preparing web server for profiling. 
Profiling started. 
Instrumenting C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\\bin\PerformanceTest.dll in place 
Info VSP3049: Small functions will be excluded from instrumentation. 
Microsoft (R) VSInstr Post-Link Instrumentation 11.0.50727 x86 
Copyright (C) Microsoft Corp. All rights reserved. 
File to Process: 
    C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\bin\PerformanceTest.dll --> C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\bin\PerformanceTest.dll 
Original file backed up to C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\bin\PerformanceTest.dll.orig 
Successfully instrumented file C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\bin\PerformanceTest.dll. 
Warning VSP2013: Instrumenting this image requires it to run as a 32-bit process. The CLR header flags have been updated to reflect this. 
Instrumenting C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\SomeLibrary\obj\Debug\SomeLibrary.dll in place 
Info VSP3049: Small functions will be excluded from instrumentation. 
Microsoft (R) VSInstr Post-Link Instrumentation 11.0.50727 x86 
Copyright (C) Microsoft Corp. All rights reserved. 
File to Process: 
    C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\SomeLibrary\obj\Debug\SomeLibrary.dll --> C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\SomeLibrary\obj\Debug\SomeLibrary.dll 
Original file backed up to C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\SomeLibrary\obj\Debug\SomeLibrary.dll.orig 
Successfully instrumented file C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\SomeLibrary\obj\Debug\SomeLibrary.dll. 
Warning VSP2013: Instrumenting this image requires it to run as a 32-bit process. The CLR header flags have been updated to reflect this. 
Launching web server with profiling. 
Launching profilable project. 
Warning VSP2355: Some Windows counters will not be collected. Without this data, some performance rules may not fire. 
Profiling process ID 68 (iisexpress). 
Process ID 68 has exited. 
Data written to C:\Users\kipusoep\Documents\InfoCaster\svn\instances\PerformanceTest\PerformanceTest_130801(1).vsp. 
Profiling finished. 
Loaded symbols for C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\0329cb19\89f716fc\App_Web_0slsprtu.dll. 
Loaded symbols for C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\0329cb19\89f716fc\assembly\dl3\62c5c0d2\9777513f_ae8ece01\PerformanceTest.dll. 
Profiling complete. 

मैं उत्पादन नहीं करता है नोटिस अंत में 'कुछ लाइब्रेरी' नामक कक्षा पुस्तकालय के बारे में कुछ भी बताएं, जहां यह कहता है "लोड किए गए प्रतीकों"।

क्या किसी को पता है कि मैं कक्षा पुस्तकालय का उपयोग क्यों नहीं कर सकता?

यहाँ वी.एस. समाधान है: http://www.fileswap.com/dl/C9HPd8uEC/

+0

क्या आपको कोई समाधान मिला है? मैं भी इस पर अटक गया हूँ। कुछ अन्य समान SO प्रश्न हैं लेकिन कोई जवाब नहीं [यहां] (http://stackoverflow.com/questions/9609300/cant-collect-instrumentation-profiler-data-for-dll-in-visual-studio-2010) और [यहां] (http://stackoverflow.com/questions/13240084/how-to-profile-only-a-class-library) – Ilan

+0

उहम नहीं, मैंने इसे केवल 3 दिन पहले पोस्ट किया है ...: -/ – kipusoep

उत्तर

13

जहां तक ​​मेरा, अपने समाधान से बता सकते हैं .dll कि किया जा रहा है उपकरण पुस्तकालय के "obj" फ़ोल्डर में है।

अब, यह सिर्फ मुझे बोल सकता है जब मुझे अपना मुंह बंद रखना चाहिए (क्योंकि मेरे पास विजुअल स्टूडियो प्रोफाइलर में थोड़ी अंतर्दृष्टि है, और मुझे नहीं पता कि क्यों/अगर कोई उपकरण "obj" बाइनरीज़ करना चाहता है "बिन"), और इसलिए, मुझे लगता है कि मैं बेहतर विचारों की अपनी ट्रेन का वर्णन करता हूं:

वीएस "एएसपी.नेट अस्थायी फ़ाइलें" स्थान में प्रतीक फ़ाइलों (.instr.pdb फ़ाइल विशेष रूप से) की तलाश में है , क्योंकि वह जगह है जहां से कक्षा पुस्तकालय डीएल लोड किया गया था। हालांकि, यह नहीं मिलेगा, क्योंकि, वह फ़ाइल क्लास लाइब्रेरी प्रोजेक्ट में obj \ Debug में बनाई गई है और वेब एप्लिकेशन के "बिन" फ़ोल्डर में कॉपी नहीं की गई है - इसलिए इसे कभी भी "एएसपी.नेट अस्थायी फ़ाइलें" पर कॉपी नहीं किया जाता है। या तो।

प्रदर्शन एक्सप्लोरर से लक्ष्यों को निकाला जा रहा है और "परियोजना लक्ष्य जोड़ें", दोनों परियोजनाओं की जाँच, मुझे देता है आप (और मैं) वास्तव में क्या था पहले:

  • PerformanceTest.dll वेब अनुप्रयोग परियोजना के दशक में .. । \ बिन \ डीबग
  • SomeLibrary.dll कक्षा लाइब्रेरी परियोजना की ... \ obj \ डीबग

तो जाहिरा तौर पर, यह कैसे वी.एस. चाहे वह काम करता है या नहीं यह होना चाहता है, है। यह ओबीजे \ डीबग में कक्षा पुस्तकालय का यंत्र है, फिर प्रोफाइलर शुरू करते समय नए जेनरेट किए गए प्रतीकों के बारे में सब भूल जाता है।

लेकिन यदि, इसके बजाय, मैं "कुछ लाइब्रेरी" को हटा देता हूं।डीएलएल "फिर से लक्षित करें," लक्ष्य बाइनरी जोड़ें ... "चुनें और मैन्युअल रूप से वेब एप्लिकेशन में से एक चुनें ... \ bin \ Debug ... और फिर प्रोफाइलिंग शुरू करें: रिपोर्ट उसी के बारे में दिखती है, लेकिन मैं ब्राउज़ कर सकता हूं "SomeLibrary" और मैं उत्पादन में इस मिल:

Preparing web server for profiling. 
Profiling started. 
Instrumenting E:\...\PerformanceTest\\bin\PerformanceTest.dll in place 
Info VSP3049: Small functions will be excluded from instrumentation. 
Microsoft (R) VSInstr Post-Link Instrumentation 11.0.50727 x86 
Copyright (C) Microsoft Corp. All rights reserved. 
File to Process: 
    E:\...\PerformanceTest\bin\PerformanceTest.dll --> 
    E:\...\PerformanceTest\bin\PerformanceTest.dll 
Original file backed up to E:\...\PerformanceTest\bin\PerformanceTest.dll.orig 
Successfully instrumented file E:\...\PerformanceTest\bin\PerformanceTest.dll. 
Warning VSP2013: Instrumenting this image requires it to run as a 
32-bit process. The CLR header flags have been updated to reflect this. 
Instrumenting E:\...\PerformanceTest\bin\SomeLibrary.dll in place 
Info VSP3049: Small functions will be excluded from instrumentation. 
Microsoft (R) VSInstr Post-Link Instrumentation 11.0.50727 x86 
Copyright (C) Microsoft Corp. All rights reserved. 
File to Process: 
    E:\...\PerformanceTest\bin\SomeLibrary.dll --> 
    E:\...\PerformanceTest\bin\SomeLibrary.dll 
Original file backed up to E:\...\PerformanceTest\bin\SomeLibrary.dll.orig 
Successfully instrumented file E:\...\PerformanceTest\bin\SomeLibrary.dll. 
Warning VSP2013: Instrumenting this image requires it to run as a 
32-bit process. The CLR header flags have been updated to reflect this. 
Launching web server with profiling. 
Launching profilable project. 
Profiling process ID 14652 (iisexpress). 
Process ID 14652 has exited. 
Data written to E:\...\PerformanceTest\PerformanceTest_130810(1).vsp. 
Profiling finished. 
Loaded symbols for 
    C:\...\App_Web_yzwcgfbx.dll. 
Loaded symbols for 
    C:\...\assembly\dl3\928eb82e\75dbb6f1_5695ce01\PerformanceTest.dll. 
Loaded symbols for 
    C:\...\assembly\dl3\6c0d460d\5208c7f1_5695ce01\SomeLibrary.dll. 
Profiling complete. 

इसे ठीक करने के लिए इस सही तरीका है फिर से, मुझे पता नहीं है, तो नहीं, वहाँ एक रास्ता प्रोफाइलर प्रतीकों के लिए देखने के लिए प्राप्त करने के लिए हो सकता है?। क्लास लाइब्रेरी के ओबीजे फ़ोल्डर में जब उन्हें यह नहीं मिलता है कि यह कहां से अपेक्षा करता है - या .instr.pdb फ़ाइल को बिन फ़ोल्डर प्री-प्रोफाइलिंग में कॉपी करने का एक तरीका है ताकि इसे छाया प्रतिलिपि में ASP.NET अस्थायी में शामिल किया जा सके। फ़ाइलें

+0

धन्यवाद JimmiTh। मुझे नहीं पता कि यह ठीक करने का सही तरीका है, लेकिन यह काम करता है और यही वही है जो मैंने पूछा, धन्यवाद! – kipusoep

1

मैं सफलतापूर्वक मेरी कक्षा पुस्तकालय प्रोफ़ाइल में कामयाब रहे - लेकिन केवल एक सांत्वना आवेदन के भीतर से। मैं ASP.NET ऐप प्रदर्शन प्रोफाइलिंग सत्र के दौरान कक्षा लाइब्रेरी को प्रोफ़ाइल करने में सक्षम नहीं हूं।

कुछ मिश्रित लिंक - जो अफसोस मेरी समस्या का समाधान नहीं है, लेकिन आप कुछ सुराग दे सकते हैं:

  • भागो Developer Command Prompt for VS2012
  • तो फिर तुम VSPerfReport <yourreport.vsp> /debugsympath को यह उपयोग कर सकते हैं बाहर जहां लगाने की SomeLibrary.dll
  • समस्या निवारण युक्तियां http://msdn.microsoft.com/en-us/library/bb385766.aspx से लोड किया जाना चाहिए
4

मुझे यह समस्या VS2014 में एक exe के साथ मिली थी जिसे "कोई भी CPU" के लिए बनाया गया था "32 बिट पसंद करें" सेट के साथ, जबकि संदर्भित पुस्तकालयों में "32 बिट पसंद नहीं है" (यानी। 32-बिट exe, 64-बिट पुस्तकालय)।

exe ​​को "32 बिट पसंद नहीं" करने के लिए बदलना प्रतीक के साथ समस्या को ठीक करता है, मुझे लगता है कि ऐसा इसलिए है क्योंकि पुस्तकालयों को exe (वाद्य यंत्र के दौरान) के प्रतीक से मेल करने के लिए संशोधित किया गया है और प्रतीकों का मिलान नहीं हुआ है।

3

यह समाधान मेरे लिए काम किया:

http://www.brothersincode.com/post/Matching-symbols-could-not-be-found-Performance-Profiler.aspx

आप भी इसे दूसरी तरह के आसपास की कोशिश कर सकते हैं, अपने dll को हटाने के रूप में यह है, जिसका अर्थ है और कहा कि हो सकता है और साथ ही कर सकते हैं बिन कारण से एक डाल करने के लिए कोशिश कर रहा है चारों ओर एक और रास्ता हो।

0

वर्तमान में स्वीकृत उत्तर ने मुझे वहां जाने में मदद की, लेकिन मैं नम्रतापूर्वक उन लोगों को थोड़ा और सरल निर्देश देने की कोशिश करूंगा जो बिल्कुल वही काम पूरा करने की कोशिश कर रहे हैं, बस अगर मैं एक जोड़े को बचाऊंगा किसी के लिए कठिन googling घंटे की। मैं असफल रूप से एक डब्ल्यूसीएफ सेवा को प्रोफ़ाइल करने का प्रयास कर रहा था जो बाह्य असेंबली का उपयोग करता है, जो रनटाइम पर प्रतिबिंब द्वारा लोड किया जाता है और यह सेवा मेरे कस्टम क्लाइंट द्वारा ट्रिगर की जाती है। मुझे 2 समस्याएं थीं: मेरी डब्लूसीएफ सेवा सिर्फ प्रोफाइलिंग सत्र के दौरान शुरू नहीं हुई थी (लेकिन डीबगिंग करते समय यह हमेशा ऐसा करेगी), और फिर जब किसी कारण से - विजुअल स्टूडियो ने बाहरी असेंबली के लिए प्रतीकों को लोड नहीं किया। इसलिए दोनों चीजों को काम करने के लिए मुझे कस्टम मुख्य असेंबली के साथ-साथ मेरी मुख्य डब्ल्यूसीएफ सेवा के लक्ष्य सेट के साथ एक उपकरण प्रदर्शन सत्र बनाने की आवश्यकता है और लॉन्च मोड सेट करें - इंटरनेट एक्सप्लोरर (अन्यथा सेवा शुरू नहीं होगी)। कोई exes या समाधान से ग्राहक को इंगित नहीं। तब मैंने तुरंत प्रोफाइलर शुरू नहीं किया, लेकिन "प्रदर्शन एक्सप्लोरर" विंडो में इसकी संपत्तियों को संशोधित किया और 2-nd (स्वयं सेवा के ठीक बाद) लॉन्च होने के लिए "लॉन्च" टैब पर अपने कस्टम क्लाइंट का एक बाइनरी जोड़ा। इसने क्लाइंट में सही "सेवा संदर्भ" सही करने में भी मदद की (मैं वास्तव में इसका उपयोग नहीं करता हूं, मैं साझा असेंबली का उपयोग करता हूं और चैनलफैक्टरी का उपयोग करके चैनल जेनरेट करता हूं) और क्लाइंट को पहले डीबग मोड में लॉन्च करता हूं (लेकिन वास्तव में कभी भी सेवा तक पहुंचने के बिना)। हो सकता है कि ऐसा करने का सही तरीका न हो, लेकिन यह चाल है और मैं अंततः गुगलिंग के 2 दिनों के बाद अपनी सेवा प्रोफाइल कर सकता हूं - इस विषय पर बहुत अधिक दस्तावेज़ उपलब्ध नहीं हैं, और इस स्टैक ओवरफ्लो प्रश्न का स्वीकार्य उत्तर सबसे अच्छा संसाधन है I मिल गया।

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