Sử dụng Profiler trong chế độ truy tìm. Sau đó, bạn sẽ thấy mọi thứ sẽ gọi nhau như thế nào và thời gian được sử dụng. Bên cạnh đó profilers thương mại cũng có những cái miễn phí. Đối với mã được quản lý, có NP Profiler là khá tốt.
Nếu bạn muốn đi sâu hơn, bạn có thể sử dụng Windows Performance Toolkit cung cấp cho bạn thông tin đầy đủ về tất cả các chủ đề và cách tương tác với nhau nếu bạn muốn biết. Sự khác biệt duy nhất là bạn nhận được các ngăn xếp khác nhau, từ hạt nhân cho đến khi khung được quản lý của bạn.
Nếu điều này là không đủ, bạn có thể thiết lập mã của bạn bằng thư viện truy tìm (tự động với PostSharp, ....) hoặc theo cách thủ công hoặc với macro cho từng tệp nguồn. Tôi đã thực hiện một thư viện truy tìm nhỏ khá nhanh và có khả năng cấu hình cao. Xem here. Là tính năng độc đáo, nó có thể theo dõi bất kỳ ngoại lệ ném tự động.
private void SomeOtherMethod()
{
using (Tracer t = new Tracer(myType, "SomeOtherMethod"))
{
FaultyMethod();
}
}
private void FaultyMethod()
{
throw new NotImplementedException("Hi this a fault");
}
Ở đây có kết quả:
18:57:46.665 03064/05180 <{{ > ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeMethod
18:57:46.668 03064/05180 <{{ > ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod
18:57:46.670 03064/05180 < }}< ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod Exception thrown: System.NotImplementedException: Hi this a fault
at ApiChange.IntegrationTests.Diagnostics.TracingTests.FaultyMethod()
at ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod()
at ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeMethod()
at ApiChange.IntegrationTests.Diagnostics.TracingTests.Demo_Show_Leaving_Trace_With_Exception()
18:57:46.670 03064/05180 < }}< ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod Duration 2ms 18:57:46.689 03064/05180 < }}< ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeMethod Duration 24ms
Nguồn
2013-02-13 21:06:45
Bạn đã xem http://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-called-the-current-method –
Tôi không thể trợ giúp nhưng tự hỏi tại sao bạn lại muốn điều đó. Trong trường hợp ngoại lệ, bạn có thể xem stacktrace. Nhưng tại sao bạn muốn một bản ghi của tất cả các cuộc gọi phương thức? – comecme
Có một lỗi mà chúng tôi có thể theo dõi cho đến một điểm nhất định, và sau đó điều khiển đi đến ứng dụng mẹ không phải là ứng dụng của chúng tôi - vì vậy không có mã nguồn (một nơi nào đó sau khi ứng dụng ngừng đáp ứng). Để tìm hiểu những gì được gọi trong ứng dụng của chúng tôi sau đó chúng tôi đang cố gắng này. –