docs.unity3d.com
    Show / Hide Table of Contents

    Debugging and Profiling

    Burst now provides support for debugging and/or profiling using a native debugger (for instance - Visual Studio Community) or profiling tool (for instance - Instruments). Managed debugging of Burst compiled code is currently not supported.

    Managed debugging

    If you wish to use a managed debugger to debug a job, you will need to disable the Burst compiler or comment the [BurstCompile] attribute from your job and attach a regular .NET managed debugger

    Native debugging

    Burst compiled code can be debugged using a native debugger by simply attaching the native debugger to the Unity process. However, due to the optimisations employed by Burst, you will generally find it easier to debug by ensuring your code is compiled with Native debuggers in mind.

    You can do this either via the Jobs Menu which will compile the code with native debugging enabled globally (this disables optimizations, so it will impact performance of Burst code).

    Alternatively, you can use the Debug=true option in the [BurstCompile] attribute for your job e.g.

    [BurstCompile(Debug=true)]
    public struct MyJob : IJob
    {
        // ...
    }
    

    Which will then only affect optimizations (and debuggability) on that job. Note that currently Standalone Player builds will also pick up the Debug flag, so standalone builds can be debugged this way too.

    Burst also supports code-based breakpoints via System.Diagnostics.Debugger.Break() which will generate a debug trap into the code. Note that if you do this you should ensure you have a debugger attached to intercept the break. At present the breakpoints will trigger whether a debugger is attached or not.

    Burst adds information to track local variables, function parameters and breakpoints. If your debugger supports conditional breakpoints, these are preferable to inserting breakpoints in code, since they will only fire when a debugger is attached.

    Known issues with debugging/profiling

    In This Article
    • Debugging and Profiling
    • Managed debugging
    • Native debugging
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023