Python源码学习 番外-为方便调试和查看变量而自己写的autoexp.dat

来源:互联网 发布:100本网络禁书在线阅读 编辑:程序博客网 时间:2024/06/05 16:16

autoexp.dat位于C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger 目录下,

控制了Visual Studio中变量的调试时候的显示方式, 其中预定义了STL中许多类型的显示


Python源码中,很多都是PyObject* 类型的变量, 查看起来非常不便,所以自己在autoexp.dat里面加了对PyObject类型的强制转换后的显示

;-----------------Python---_object|*::_object{preview(#( [(PyTupleObject*)(&$c), lx]," ,[Type] ",[$c.ob_type->tp_name,s]," ,[tp_flags] ",[$c.ob_type->tp_flags, lx],#if ($c.ob_type->tp_name[0] == 't' && $c.ob_type->tp_name[1] == 'u') (#(" ,[Size] ",[((PyTupleObject*)(&$c))->ob_base.ob_size,s]))#else(#if ($c.ob_type->tp_name[0] == 'd' && $c.ob_type->tp_name[1] == 'i') (   #( " ,[ma_fill] ",  [((_dictobject*)(&$c))->ma_fill, s],  " ,[ma_used] ",  [((_dictobject*)(&$c))->ma_used, s]   ))#else(#if ($c.ob_type->tp_name[0] == 's' && $c.ob_type->tp_name[1] == 't') (#( ",[buf] ",   [((PyUnicodeObject*)(&$c))->str, su]  ))#else()))))children(#if ($c.ob_type->tp_name[0] == 'd' && $c.ob_type->tp_name[1] == 'i') (#array(expr : ((_dictobject*)(&$c))->ma_table[$i].me_key,size: ((_dictobject*)(&$c))->ma_mask):$e)#else(#if ($c.ob_type->tp_name[0] == 't' && $c.ob_type->tp_name[1] == 'u') (#array(expr: ((PyTupleObject*)(&$c))->ob_item[$i],size:((PyTupleObject*)(&$c))->ob_base.ob_size):$e)#else ()))}

虽然没有覆盖所有类型,也hardcode了很多东西,但是至少dict 和tuple可以看的舒服一点了



原创粉丝点击