Используйте Profiler в режиме трассировки. Затем вы увидите, как все называет друг друга и где тратится время. Помимо коммерческих профайлеров есть и бесплатные. Для управляемого кода есть NP Profiler, что довольно хорошо.
Если вы хотите углубиться, вы можете использовать Windows Performance Toolkit, который дает вам полную информацию по всем темам и как взаимодействовать друг с другом, если вы хотите знать. Единственное различие заключается в том, что вы получаете стеки от ядра до ваших управляемых кадров.
Если этого недостаточно, вы можете привязать свой код к библиотеке трассировки (автоматически с помощью PostSharp, ....) или вручную или с помощью макроса для каждого исходного файла. Я создал небольшую библиотеку трассировки, которая довольно быстрая и настраиваемая. См. here. В качестве уникальной функции он может автоматически отслеживать любое исключенное исключение.
private void SomeOtherMethod()
{
using (Tracer t = new Tracer(myType, "SomeOtherMethod"))
{
FaultyMethod();
}
}
private void FaultyMethod()
{
throw new NotImplementedException("Hi this a fault");
}
вот выход:
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
вы взглянули на http://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-called-the-current-method –
я не могу помочь но задайтесь вопросом, зачем вам это нужно. В случае исключения вы можете просмотреть стек. Но зачем вам вести журнал всех вызовов методов? – comecme
Есть ошибка, с которой мы можем отслеживать до определенного момента, и после этого элемент управления переходит к родительскому приложению, которое не является нашим приложением, поэтому никакого исходного кода (где-то после этого приложение перестает отвечать). Чтобы узнать, что называется в нашем приложении, мы пытаемся это сделать. –