none
Undocumented Intrinsic tag for natvis?

    Question

  • So, I happened to type '<' right after the 

    <?xml version="1.0" encoding="utf-8"?>
    <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

    and what popped up was surprising.  There were a few undocumented tags listed:

    1. LocalizedStrings
        Specifies a list of localized strings that can be referenced by natvis elements.  Define localized strings in a satellite natvis file with the same name as the main file and deploy it into a locale specific folder next to the main natvis file.  Debugger will load localized resource from the appropriate satellite file.  Define localized strings in the main natvis file to serve as defaults when there is no satellite file for a local
    2. UIVisualizer
        Specifies details of a UI visualizer which creates its own interface to display an object. Visualizer entry for a type needs to reference a UI visualizer in order to associate the type with the UI visualizer.
    3. Intrinsic
        Describes a custom intrinsic function that can be called from an expression. An <Intrinsic> element must be accompanied by a debugger component that implements the function through the IDkmIntrinsicFunctionEvaluator140 interface.  Attributes of this tag are:
        • Id - Specifies unique id for this function, given the source id and language id.  It is used by the implementing component to determine which function was called if it implements multiple intrinsic functions.
        • LanguageId - Specifies the language id used to identify the debugger component that implements the function.  This must match the filter constraints of the IDkmIntrinsicFunctionEvaluator140 implementation.  Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}".
        • Name - The name of the intrinsic function. This must be a valid C++ identifier. A valid C++ identifier.
        • ReturnType - The return type of the intrinsic function.
        • SourceId - Specifies the source id used to identify the debugger component that implements the function.  This must match the filter constraints of the IDkmIntrinsicFunctionEvaluator140 implementation.
        • SideEffect - If true, indicates that this function may cause side effects.  If true, calls to this function will be disabled in scenarios where unexpected side effects may be confusing to the user.  Functions that modify state, either inside the debuggee or inside Visual Studio, should set this to true.  By default, this value is false.
        • Varargs - If true, indicates that this function is a varargs function, and that additional arguments can be passed after the explicitly-listed parameters.  Default is false.
        There seems to be a an optional child <Parameter> tag as well that has the attribute:
        • Type - Specifies the type of the parameter to the given intrinsic function.

    I found the .xsd file that contains this information in C:\Program Files (x86)\Microsoft Visual Studio 14.0\Xml\Schemas\1033.  I'm not that well versed in reading this sort of file, but it is interesting.  I'm specifically interested in the Intrinsic tag (which is why I only expanded that one) and was wondering if this is a future interface to allow users to generate their own intrinsic functions.

    When will this be available to the general public?  Does anyone know anything about this interface or how to use it?


    I don't mind someone marking a post as "Proposed as answer", but DO NOT mark it as "Answered". If I am the OP, I will decide if a post actually answers my post or not. Thank you.

    Thursday, November 24, 2016 12:13 AM

All replies

  • Hi Adrian,

    For the Intrinsic tag in AutoVisualizer, we could only get some explanation from the natvis.xsd file, where introduce the attributes for this tag.

    I need to test this tag and its attributes one by one to learn how to use it. It will take a long time. Please be patient. If any updates, I will update my test result here as soon as possible. Thanks for your understanding.

    Best Regards,
    Weiwei


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Monday, November 28, 2016 8:24 AM
  • Hi Weiwei,

    Is there any update on this?

    Thanks,

    A


    I don't mind someone marking a post as "Proposed as answer", but DO NOT mark it as "Answered". If I am the OP, I will decide if a post actually answers my post or not. Thank you.

    Thursday, February 16, 2017 4:30 PM
  • It is already available in Visual Studio 2017. But still not in 2015 :(
    Friday, January 18, 2019 11:16 AM
  • Hi Weiwei,

    It's been a couple of years.  Any progress?  It would be great if I could mark my own functions as intrinsic.

    Thanks,

    A


    I don't mind someone marking a post as "Proposed as answer", but DO NOT mark it as "Answered". If I am the OP, I will decide if a post actually answers my post or not. Thank you.


    Tuesday, May 14, 2019 1:27 PM