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

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可以看的舒服一点了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值