2013-08-01 47 views
15

Tôi đang cố gắng để Ứng dụng một ứng dụng web ASP.NET với Visual Studio 2012, .NET 4. Giải pháp chứa một ứng dụng web và một thư viện lớp. Vấn đề là tôi không thể nhìn thấy bước vào thư viện lớp, tôi nhận được một thông báo nói:Visual Studio Performance Profiling - Biểu tượng thư viện lớp không thể tìm thấy

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

Sản lượng trong khi hồ sơ có vẻ tốt mặc dù:

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. 

tôi nhận thấy đầu ra không nhà nước bất cứ điều gì về thư viện lớp được gọi là 'SomeLibrary' ở cuối, nơi nó nói "Loaded symbols for".

Có ai biết tại sao tôi không thể sử dụng thư viện lớp học không?

Đây là giải pháp VS: http://www.fileswap.com/dl/C9HPd8uEC/

+0

Bạn đã tìm thấy giải pháp chưa? Tôi cũng bị mắc kẹt về điều này. Có một số câu hỏi SO tương tự khác nhưng không có câu trả lời [ở đây] (http://stackoverflow.com/questions/9609300/cant-collect-instrumentation-profiler-data-for-dll-in-visual-studio-2010) và [ở đây] (http://stackoverflow.com/questions/13240084/how-to-profile-only-a-class-library) – Ilan

+0

Không, tôi đã đăng bài này chỉ 3 ngày trước ...: -/ – kipusoep

Trả lời

13

theo như tôi có thể nói từ giải pháp của bạn, .dll đó là được instrumented nằm trong thư mục "obj" của thư viện lớp.

Bây giờ, điều này có thể chỉ là tôi nói khi tôi nên im miệng (vì tôi có ít thông tin chi tiết về hồ sơ Visual Studio, và tôi không biết tại sao/nếu người ta muốn sử dụng "obj" nhị phân hơn là "bin"), và do đó, tôi đoán tôi nên mô tả tốt hơn đào tạo của mình về tư tưởng:

VS đang tìm kiếm tệp biểu tượng (tệp .instr.pdb cụ thể) trong vị trí "Tệp tạm thời ASP.NET" , bởi vì đó là nơi mà nó nạp thư viện lớp từ. Mặc dù vậy, nó sẽ không tìm thấy, vì tệp đó được tạo trong obj \ Debug trong dự án thư viện lớp và không được sao chép sang thư mục "bin" của ứng dụng web - vì vậy nó không bao giờ bị sao chép vào "Tệp tin tạm thời ASP.NET" hoặc.

Loại bỏ các mục tiêu từ Performance Explorer và chọn "Add Project Target", kiểm tra cả hai dự án, mang lại cho tôi chính xác những gì bạn (và tôi) đã có trước:

  • PerformanceTest.dll trong Web Application dự án .. . \ bin \ Debug
  • SomeLibrary.dll trong của class Library dự án ... \ obj \ Debug

Vì vậy, rõ ràng, đây là cách VS muốn nó được, cho dù nó hoạt động hay không. Nó thiết lập thư viện lớp trong obj \ Debug, sau đó quên tất cả về các biểu tượng mới được tạo ra khi khởi động profiler.

Nhưng nếu, thay vào đó, tôi xóa "SomeLibrary.dll "nhắm mục tiêu một lần nữa, chọn" Thêm mục tiêu nhị phân ... "và chọn thủ công một ứng dụng web ... \ bin \ Debug ... Và sau đó bắt đầu lược tả: Báo cáo trông giống nhau, nhưng tôi có thể duyệt qua "SomeLibrary" và tôi có được điều này trong đầu ra:

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. 

đây có phải là cách chính xác để sửa chữa nó lần nữa, tôi không có ý tưởng Nếu không, có thể có một cách để có được hồ sơ để tìm kiếm những biểu tượng?. trong thư mục obj của thư viện lớp khi nó không tìm thấy chúng ở nơi mà nó mong đợi - hoặc một cách sao chép tệp .instr.pdb vào thư mục bin trước khi lược tả để nó được đưa vào bản sao bóng tối đến ASP.NET tạm thời Tập tin

+0

Cảm ơn JimmiTh. Tôi không biết nếu đó là cách sửa chữa chính xác, nhưng nó hoạt động và đó chính xác là những gì tôi yêu cầu, cảm ơn bạn! – kipusoep

1

tôi đã thành công trong việc hồ sơ thư viện lớp học của tôi - nhưng chỉ từ trong một ứng dụng console. Tôi đã không thể hồ sơ thư viện lớp trong một phiên lược tả hiệu suất ứng dụng ASP.NET.

Một số loại liên kết - mà than ôi đã không giải quyết vấn đề của tôi, nhưng có thể cung cấp cho bạn một số dẫn:

  • Chạy Developer Command Prompt for VS2012
  • Sau đó, bạn có thể sử dụng để VSPerfReport <yourreport.vsp> /debugsympath để tìm ra nơi SomeLibrary.dll nên được nạp từ
  • các mẹo khắc phục sự cố http://msdn.microsoft.com/en-us/library/bb385766.aspx
4

Tôi đã gặp vấn đề này trong VS2014 với một exe được xây dựng cho "CPU bất kỳ" với tập hợp "Ưu tiên 32 bit", trong khi các thư viện được tham chiếu không có "Ưu tiên 32 bit" (ví dụ: Exe 32 bit, thư viện 64 bit).

Thay đổi exe thành "không thích 32 bit" đã khắc phục sự cố với biểu tượng, tôi nghĩ đó là do các thư viện được sửa đổi để khớp bit bit của exe (trong quá trình đo đạc) và các ký hiệu không còn khớp nữa.

0

Câu trả lời hiện được chấp nhận đã giúp tôi đạt được điều đó, nhưng tôi sẽ cố gắng cung cấp hướng dẫn đơn giản hơn cho những người đang cố gắng hoàn thành chính xác điều tôi đang làm, trong trường hợp tôi sẽ cứu một cặp vợ chồng của những giờ googling khó khăn cho ai đó. Tôi đã không thành công cố gắng để cấu hình một dịch vụ WCF sử dụng hội đồng bên ngoài, được nạp bởi sự phản ánh lúc chạy và có dịch vụ này được kích hoạt bởi khách hàng tùy chỉnh của tôi. Tôi đã có 2 vấn đề: WCF dịch vụ của tôi chỉ không bắt đầu ở tất cả trong phiên profiling (nhưng trong khi gỡ lỗi nó sẽ luôn luôn làm điều đó), và sau đó khi nó đã làm cho một số lý do - Visual Studio coulndn't tải các biểu tượng cho hội đồng bên ngoài. Vì vậy, để có được cả hai thứ để làm việc tôi cần thiết để tạo một buổi biểu diễn thiết bị với mục tiêu được đặt thành dịch vụ WCF chính của tôi cùng với các hội đồng bên ngoài tùy chỉnh và đặt chế độ khởi chạy - Internet Explorer (nếu không dịch vụ sẽ không bắt đầu). Không có exes hoặc chỉ cho khách hàng từ giải pháp. Sau đó, tôi đã không bắt đầu profiler ngay lập tức, nhưng sửa đổi nó thuộc tính trong cửa sổ "Performance Explorer" và thêm một nhị phân của khách hàng tùy chỉnh của tôi vào tab "Launch" để được đưa ra 2-nd (ngay sau khi dịch vụ chính mình). Nó cũng giúp có một "tham chiếu dịch vụ" đúng trong máy khách (tôi không thực sự sử dụng nó, tôi sử dụng chia sẻ và tạo kênh bằng ChannelFactory) và khởi động máy khách ở chế độ gỡ lỗi trước (nhưng không thực sự truy cập dịch vụ). Có lẽ đó không phải là cách thích hợp để làm điều đó, nhưng nó thực hiện thủ thuật và cuối cùng tôi có thể lập hồ sơ dịch vụ của tôi sau 2 ngày googling - không có nhiều tài liệu về chủ đề này, và câu trả lời được chấp nhận cho câu hỏi stackoverflow này là tài nguyên tốt nhất tôi tìm.

Các vấn đề liên quan