Search

Very long symbols get truncated and debug visualizers can't match by stheophil

Closed
as By Design Help for as By Design

2
0
Sign in
to vote
Type: Bug
ID: 776886
Opened: 1/18/2013 2:50:46 AM
Access Restriction: Public
0
Workaround(s)
0
User(s) can reproduce this bug
I encounter very long symbol due to expanded typedefs and template magic. The VC compiler does not keep track of original typedefs as clang does and expands them all. The symbols get truncated at some max length like the following example. This makes the symbols illegible and worse, the debug visualizers cannot match anymore. Example:


boost::intrusive::list<
    set_partition_base<boost::transform_iterator<CLayoutSolverT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion>,SDragSpanDescriptor,void *>::FGridlineCast,
        boost::transform_iterator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridlineBuckets::FGetGridline,
        std::_Vector_iterator<std::_Vector_val<std::_Simple_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline>,
        std::_Vec_base_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline,
        std::allocator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline> > > >,
        boost::use_default,boost::use_default>,
        boost::use_default,boost::use_default>,
        
        STargetPosition,
        F2wayFrom3way<fn_compare,boost::algorithm::is_less>,
        set_partition_value_traits<
        boost::transform_iterator<CLayoutSolverT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion>,SDragSpanDescriptor,void *>::FGridlineCast,
        boost::transform_iterator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridlineBuckets::FGetGridline,
        std::_Vector_iterator<std::_Vector_val<std::_Simple_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline>,
        std::_Vec_base_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline,
        std::allocator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline> > > >,
        boost::use_default,boost::use_default>,boost::use_default,boost::use_default> >
    >::part,
    boost::intrusive::member_hook<
        set_partition_base<
            boost::transform_iterator<CLayoutSolverT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion>,SDragSpanDescriptor,void *>::FGridlineCast,
            boost::transform_iterator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridlineBuckets::FGetGridline,
            std::_Vector_iterator<std::_Vector_val<std::_Simple_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline>,
            std::_Vec_base_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline,
            std::allocator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline> > > >,
            boost::use_default,boost::use_default>,boost::use_default,boost::use_default>,
            STargetPosition,
            F2wayFrom3way<fn_compare,boost::algorithm::is_less>,
            set_partition_value_traits<
            boost::transform_iterator<CLayoutSolverT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion>,SDragSpanDescriptor,void *>::FGridlineCast,
            boost::transform_iterator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridlineBuckets::FGetGridline,
            std::_Vector_iterator<std::_Vector_val<std::_Simple_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline>,
            std::_Vec_base_types<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,void *>::SGridline,
            std::allocator<SSolveCollisionsT<SGridlinePayloadT<SSourceGridlineT<CNonHandleDragT<CDragTraits>::TGridlinePayloadUnion> >,SDragSpanDescriptor,v48134b84270b613575081ef18293cc09
Details (expand)

Visual Studio/Team Foundation Server/.NET Framework Tooling Version

Visual Studio 2012

Steps to reproduce

By creating very long symbols. Stand-alone reproduction is not easy.

Product Language

English

Operating System

Windows 7

Operating System Language

English

Actual results

Typedefs expanded, symbol truncated, debug visualizer does not match.

Expected results

Original typedefs should be remembered and used like clang does, the shortened symbols would then still match the debug visualizers.
File Attachments
0 attachments
Sign in to post a comment.
Posted by stheophil on 2/8/2013 at 1:03 AM
Why did I expect this?

Of course the behavior is not by accident but because you use strings with 16bit size fields or whatever. The problem is that your debugger does not support valid C++ programs.
Posted by Microsoft on 2/7/2013 at 2:51 PM
Hi stheophil,

Thanks for submitting this bug. After careful consideration, we've decided not to fix this bug because our compiler has certain internal limitations on the lengths of symbol names.

Karl Niu
VC++ Team
Posted by Microsoft on 1/21/2013 at 1:01 AM
Thanks for your feedback.

We are rerouting this issue to the appropriate group within the Visual Studio Product Team for triage and resolution. These specialized experts will follow-up with your issue.
Posted by Microsoft on 1/18/2013 at 3:50 AM
Thank you for your feedback, we are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com)
Sign in to post a workaround.