2011-04-20 22 views
18

Tôi chỉ muốn sử dụng .NET Profiling API (ICorProfilerCallback vv) nhưng đồng thời không muốn xử lý C++. Tôi đã nhìn xung quanh một lúc và không tìm thấy bất kỳ ví dụ nào trong C# nhưng C# + C++ trong đó phần thú vị nhất được viết bằng C++.Có thể sử dụng API lược tả ngay từ C# không?

+1

Bạn muốn tìm các tắc nghẽn hoặc rò rỉ bộ nhớ? Nếu trước đây, bạn nên biết [kỹ thuật này] (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024) . Nó hiệu quả và không cần một API, chỉ là một trình gỡ rối. –

+0

bạn gặp vấn đề gì với C++? kịch bản của bạn là gì? –

Trả lời

22

Không, bạn không thể thực hiện CLR profiling API trong mã quản lý (C# hay cách khác) kể từ khi callbacks profiling được gọi là vào những thời điểm rất cụ thể khi môi trường được quản lý được giả định là trong trạng thái nhất định. Triển khai callbacks của bạn trong mã được quản lý sẽ vi phạm rất nhiều giả định.

David Broman, nhà phát triển của các API CLR profiling, có this to say:

Bạn cần phải viết hồ sơ của bạn trong C++. Trình lược tả được gọi bằng thời gian chạy tại các điểm rất tinh tế trong khi thực hiện của ứng dụng được lược tả, và thường rất không an toàn để được chạy mã được quản lý tại các điểm đó.

David's blog là tài nguyên tuyệt vời để xử lý các API lược tả CLR.

+0

Tôi nghi ngờ điều đó nhưng cảm ơn dù sao) –

+1

chỉ có bản địa là tôi sợ –

+3

http://research.microsoft.com/en-us/um/redmond/projects/pex/wiki/Microsoft.ExtendedReflection.html –

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