Visual Studio native debugger extension to help debug native applications using Mono.

Overview

Unity Mixed Callstack

UnityMixedCallstack is a Visual Studio 2017/2019 extension to help debug native applications embedding Mono, like Unity.

If you are using Visual Studio 2015 then you will need to grab one of the older releases of UnityMixedCallstack

Mono doesn't generate debug symbols that Visual Studio understands for jitted functions.

As a result, Visual Studio can not show anything meaningful for managed stack frames.

This fork of PmipMyCallstack has been developed for developers at unity-technologies and support has been added to our clone of mono, which can be found here https://github.com/Unity-Technologies/mono

This version requires you to set the UNITY_MIXED_CALLSTACK environment variable before launching visual studio and before launching Unity (or using our mono standalone), which will tell the mono runtime to write out each jit'd function to a file.

The original PmipMyCallstack plugin created by JB Evain would call the function mono_pmip on every frame that doesn't belong to a module to show a meaningful representation of the stack frame and display it natively in the call stack window. This plugin does the same thing, but instead of calling over ipc, mono writes a file with the jit information and we lookup the IP from that. This allows us to open much larger callstacks, and many frames without visual studio hanging for a long time (an issue since Unity has so many threads).

In this version we also display the module the managed code belongs to. This gives you a nice callstack to look at in visual studio.

Remember, you need to disable Just My Code in the debugger options (Debug -> Options...) to expand the [External Code] entry in the callstack.

Before

Before Unity Mixed Callstack

After

After Unity Mixed Callstack

Issues
  • Could this approach also work with Windows Performance Analyzer?

    Could this approach also work with Windows Performance Analyzer?

    Right now it's impossible to view Mono stack frames within a recorded WPR trace (they show up as ?!?, like the documentation says).

    Can this tool be extended to allow viewing them in Windows Performance Analyzer?

    opened by Holo-Krzysztof 3
  • Version 2.7 breaks compatibility with Visual Studio 2019

    Version 2.7 breaks compatibility with Visual Studio 2019

    The latest Version 2.7 which introduces support for VS 2022 cannot be installed on previous versions.

    With only 2019 installed, it gives this error:

    VSIXInstaller.NoApplicableSKUsException: This extension is not installable on any currently installed products.

    opened by akerfoot 2
  • Fix parsing of version field when decimal separator is not

    Fix parsing of version field when decimal separator is not "."

    This should fix an issue where pmip file parsing fails if your system is configured with a decimal separator that is not .. On my system I had , set as the decimal separator (default for danish region setting) and managed addresses were not translated but as soon as I set it to . it started working.

    This is mostly a speculative fix since I'm not actually sure how to build/package the extension in order to load it into VS so I haven't tested it beyond trying to parse some different version numbers with different decimal separators configured.

    opened by salvadorj 2
  • Add support for Visual Studio 2022.

    Add support for Visual Studio 2022.

    Added initial support for Visual Studio 2022. Tested with recent trunk with both 2019 and 2022.

    2 things that may need cleanup :

    1. Getting Visual Studio path seems a bit tricky. Used my local path for now.
    2. VSIX Manifest needs comment/uncomment depending on version building for.
    opened by venkify 1
  • bump version to 2.6

    bump version to 2.6

    Need to bump extension version after landing fix: https://github.com/Unity-Technologies/UnityMixedCallstack/commit/627053efe0a69ce2f034bafe75e95d5dd5d9232d

    opened by UnityAlex 0
Releases(2.8)
Owner
Unity Technologies
Unity Technologies
Visual Studio Extension that installs additional color themes

Using this Extension Download and install the extension Restart Visual Studio Navigate to Tools > Options > Environment > General and select your colo

Microsoft 326 Jun 13, 2022
Visual Studio extension for assembly syntax highlighting and code completion in assembly files and the disassembly window

Asm-Dude Assembly syntax highlighting and code assistance for assembly source files and the disassembly window for Visual Studio 2015, 2017 and 2019.

Henk-Jan Lebbink 3.9k Jun 25, 2022
A Visual Studio extension that provides enhanced support for editing High Level Shading Language (HLSL) files

HLSL Tools for Visual Studio This extension is for Visual Studio 2017 / 2019. Go here for the Visual Studio Code extension. HLSL Tools is a Visual Stu

Tim Jones 398 Jun 22, 2022
RV-Debugger-BL702 is an opensource project that implement a JTAG+UART debugger with BL702C-A0.

BL702 is highly integrated BLE and Zigbee combo chipset for IoT applications, contains 32-bit RISC-V CPU with FPU, frequency up to 144MHz, with 132KB RAM and 192 KB ROM, 1Kb eFuse, 512KB embedded Flash, USB2.0 FS device interface, and many other features.

Sipeed 73 Jun 21, 2022
A keystone engine powered Windows Debugger extension

DbgKeystone A Keystone engine powered Windows Debugger extension Reasoning WinDbg's default assember (the a command) can't handle instructions involvi

Michael B. 9 May 19, 2022
A C# hot reload framework for Unity3D, based on Mono's MONO_AOT_MODE_INTERP mode.

PureScript 一个支持Unity3D的C#热更框架,基于Mono的MONO_AOT_MODE_INTERP模式。 支持在iOS平台Assembly.Load 构建时自动绑定Unity的Il2cpp代码。 支持大部分Unity特性,包括MonoBehaviour、Coroutine。 支持配置

null 257 Jun 25, 2022
A universal way to create a noclip mod in Unity games (Mono/IIL2CPP)

Universal-Unity-NoClip This projects aim to show how a noclip mod can be created in any unity game, regardless if its using an il2cpp or mono backend.

Jonah 20 Jun 26, 2022
QPEP (Quadratic Pose Estimation Problems) Enhanced VINS-Mono SLAM System

VINS-Mono-QPEP The QPEP (Quadratic Pose Estimation Problems) Enhanced VINS-Mono

Jin Wu 24 Jun 3, 2022
Bungie's Oni modified so it compiles with Microsoft Visual Studio 2019.

OniFoxed What's this? This is a modified variant of the recently leaked Oni source code so that it compiles under Microsoft Visual Studio 2019 with so

Mark Sowden 46 Jun 20, 2022
A D++ Discord Bot template for Visual Studio 2019 (x64 and x86)

D++ Windows Bot Template A D++ Discord Bot template for Visual Studio 2019 (x64 and x86, release and debug). The result of this tutorial. This templat

brainbox.cc 19 Jun 11, 2022
A Visual Studio template used to create Cobalt Strike BOFs

Introduction Cobalt Strike beacon object files (BOFs) is a feature that added to the beacon in order to allow rapid beacon extendibility in a more OPS

Securify 137 Jun 23, 2022
Sharpmake is an open-source C#-based solution for generating project definition files, such as Visual Studio projects and solutions, GNU makefiles, Xcode projects, etc.

Sharpmake Introduction Sharpmake is a generator for Visual Studio projects and solutions. It is similar to CMake and Premake, but it is designed for s

Ubisoft 743 Jun 10, 2022
Visual Studio Test Adapter for Catch2

Test Adapter for Catch2 Within Visual Studio, the Test Explorer is a convenient way to run and debug unit tests. This test adapter adds support for th

null 88 Jun 6, 2022
Useful UE4 Visual Studio extensions.

UE4 Smarter Macro Indenting This extension was designed to fix the unnecessary and annoying "smart" indenting that Visual Studio likes to do around va

Chris Pawlukowsky 241 Jun 14, 2022
Half-Life Singleplayer SDK 2.3, updated to compile with Visual Studio 2019. Provided as-is with no further support. See the README for more information.

Half Life 1 SDK LICENSE Half Life 1 SDK Copyright© Valve Corp. THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE CORPORATION (“Valve”). PLEASE

Sam Vanheer 5 Apr 9, 2022
RRxIO - Robust Radar Visual/Thermal Inertial Odometry: Robust and accurate state estimation even in challenging visual conditions.

RRxIO - Robust Radar Visual/Thermal Inertial Odometry RRxIO offers robust and accurate state estimation even in challenging visual conditions. RRxIO c

Christopher Doer 53 Jun 17, 2022
Visual Leak Detector for Visual C++ 2008-2015

Visual Leak Detector Introduction Visual C++ provides built-in memory leak detection, but its capabilities are minimal at best. This memory leak detec

Arkady Shapkin 862 Jun 22, 2022
🍦 Never use cout/printf to debug again

IceCream-Cpp IceCream-Cpp is a little (single header) library to help with the print debugging on C++11 and forward. Try it at godbolt! Contents Insta

Renato Garcia 383 Jun 25, 2022
A fork of Picoprobe, an SWD progammer firmware, for the Pico Debug'n'Dump

pdnd-picoprobe A fork of Picoprobe, an SWD progammer firmware, for the Pico Debug'n'Dump. Usage Make sure the "Mode" switch is set to I2C/SWD Follow g

stacksmashing 16 Dec 15, 2021