Wednesday, 17 July 2013

VisualStudio: custom display datatype in debugger

Edit \Program Files\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\autoexp.dat
Change the following entries for STL:

std::vector<*>{
   children
   (
      #array
      (
         expr :  ($e._Myfirst)[$i],
         size :  $e._Mylast-$e._Myfirst
      )
   )
   preview
   (
      #(
         "[", $e._Mylast - $e._Myfirst , "](",
         #array
         (
            expr : ($e._Myfirst)[$i],
            size : $e._Mylast-$e._Myfirst
         ),
         ")"
      )
   )
}

ATL::CComBSTR{
   preview  ([$e.m_str,su])
   stringview  ([$e.m_str,sub])
}

std::map<*>|std::multimap<*>|std::set<*>|std::multiset<*>{
    children
    (
        #tree
        (
            head : $c._Myhead->_Parent,
            skip : $c._Myhead,
            size : $c._Mysize,
            left : _Left,
            right : _Right
        ) : $e._Myval
    )

    preview
    (
        #(
            "[",
            $e._Mysize,
            "](",

            #tree
            (
                head : $c._Myhead->_Parent,
                skip : $c._Myhead,
                size : $c._Mysize,
                left : _Left,
                right : _Right
            ) : $e._Myval,

            ")"
        )
    )          
}

std::basic_string<char,*>{
preview        ( #if(($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,s]) #else ( [$e._Bx._Ptr,s]))
stringview    ( #if(($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,sb]) #else ( [$e._Bx._Ptr,sb]))
children
(
#if(($e._Myres) < ($e._BUF_SIZE))
(
#([actual members]: [$e,!] , #array( expr: $e._Bx._Buf[$i], size: $e._Mysize))
)
#else
(
#([actual members]: [$e,!],  #array( expr: $e._Bx._Ptr[$i], size: $e._Mysize))
)
)
}

std::basic_string<unsigned short,*>|std::basic_string<wchar_t,*>{
preview
(
#if(($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,su] )
#else ( [$e._Bx._Ptr,su] )
)
stringview
(
#if(($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,sub] )
#else ( [$e._Bx._Ptr,sub] )
)

}

No comments:

Post a Comment