Introducing the Microsoft Dynamics NAV Application Profiler

Did you ever wish you could monitor how your application code performs at real time? We have produced a sample and a video that can help you get started with C/AL tracing and application performance profiling.

Get the Microsoft Dynamics NAV Application Profiler here,, and watch the video on how to install, configure and use this tool to enable C/AL code tracing and determine application performance during code execution here,


David Worthington and Dmytro Sitnik from the Dynamics NAV team


Comments (10)

  1. Marton Nagy says:

    Nice tool, thank you!

    I was always missing the good old Client Monitor but this is far much better.

    And because it's possible to start from C/AL code I image some unattended use for example : measure the performance for every posting and if the time exceeds the predefined time / the performance is bad, you can send the trace log to the developer automatically.

  2. Dmytro Sitnik says:

    Good idea about measuring the performance for every posting and sending trace log to the developer.

    To implement that you will need to change .Net assembly code. It is definitely doable. Join the CodePlex project!

  3. Rainer Kuhnlein says:

    Is there a possibility to use the tool with NAV2013 (before R2)?

  4. I cant seem to get the video to work says:

    Maybe Youtube next time? :)

  5. Magnus Pettersson says:

    Trying the NAV Application Profiler

    The server throws following error when posting from the client.

    Any thoughts?

    Server instance: NAV2013R2_DEV

    User: ddddddxxxxx

    Type: System.ArgumentOutOfRangeException


     Index and length must refer to a location within the string.

     Parameter name: length

    ParamName: length


        at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)

        at Microsoft.Dynamics.Nav.Runtime.SourceContextInfo.GetStatement(SourceSpan sourceSpan)

        at Microsoft.Dynamics.Nav.Runtime.SourceContextInfo.AddOrUpdateLineNumberAndStatement(Int32 scopeId, Int32 statementNumber, SourceSpan sourceSpan)

        at Microsoft.Dynamics.Nav.Runtime.ALCodeEnvironment.GetLineNumberAndStatement(NavMethodScope methodScope)

        at Microsoft.Dynamics.Nav.Runtime.ALFunctionTracingExecutionListener.Microsoft.Dynamics.Nav.Runtime.IExecutionListener.ProcessStatementHit(NavMethodScope methodScope)

        at Microsoft.Dynamics.Nav.Runtime.ExecutionListener.CompoundExecutionListener.ProcessStatementHit(NavMethodScope methodScope)



        at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)

        at Microsoft.Dynamics.Nav.Service.ServiceOperationInvoker.ErrorMappingCombinator(ServiceOperation innerOperation, NSServiceBase serviceInstance, Object[] inputs, Object[]& outputs)

    Source: mscorlib

    HResult: -2146233086

  6. Dmytro Sitnik says:

    Unfortunately, you cannot use this tool on NAV2013.

  7. Dmytro Sitnik says:

    Regarding the ArgumentOutOfRangeException exception. It is a product issue and it should have been fixed as a hot fix. Please try to use latest hot fix build and report if it does not solve your problem.

  8. Sergii O says:

    Great tool, thanks!

    Do you have any information on how (and if) the setting "Enable Full C/AL Function Tracing" affects NAV server performance?

  9. Dmytro Sitnik says:

    Setting "Enable Full C/AL Function Tracing" has zero impact on perf if you are not profiling or tracing.

  10. Miranda says:

    Their needs are often less stringent, although these firms
    tend to have larger interest levels than bank cards.