我使用视觉检漏仪。它会针对某些泄漏正确显示调用堆栈,但是我得到一些调用堆栈为空的输出,如下所示:
---------- Block 131148 at 0x69B3AF68: 144 bytes ----------
Leak Hash: 0xCA7D251C, Count: 1, Total 144 bytes
Call Stack (TID 1600):
Data:
B8 0A 80 01 01 00 00 00 7F 7D 00 00 00 00 00 00 ........ .}......
00 00 00 00 A4 81 1A 00 17 00 00 00 A8 AE EA 4E ........ .......N
40 EE 22 53 00 00 70 42 FB 19 CC BD D4 E7 2E 00 @."S..pB ........
CD CD CD CD 80 2D FB 6E A0 4A B2 69 20 8D 00 54 .....-.n .J.i...T
D8 6B 6A 54 00 CD CD CD 38 DB 81 01 40 EE 22 53 .kjT.... 8...@."S
CD CD CD CD CD CD CD CD B0 AF B3 69 CD CD CD CD ........ ...i....
60 DB 81 01 40 EE 22 53 E8 03 00 00 CD CD CD CD `...@."S ........
C8 AF B3 69 CD CD CD CD CD CD CD CD CD CD CD CD ...i.... ........
CD CD CD CD CD CD CD CD 00 00 00 00 CD CD CD CD ........ ........
我不知道如何跟踪这样的问题。
任何帮助都将不胜感激。
答案 0 :(得分:6)
您应该尝试在ascii
中将输出格式从unicode
更改为vld.ini
。
您的堆叠信息必须包含无法转换为unicode
的{{1}}个字符。
如果在调试中编译VLD,则会导致断言。
请参阅VLD网站上的相关主题: https://vld.codeplex.com/workitem/10606
我在评论中发布了更改vld.ini的替代方法(需要修改vld源并重新编译)。
答案 1 :(得分:0)
在y1
中将fig, axes = plt.subplots(2,1, sharex=True, gridspec_kw={'hspace':0})
# plot something on y1
axes[0].bar([0,1],[2,3],width=-0.4, align='edge')
# y2 and plot something
ax1 = axes[0].twinx()
ax1.bar([0,1],[4,5], width=0.4, align='edge', hatch='o')
# y3 with invert yaxis
axes[1].bar([0,1],[10,15], width=0.4, hatch='//')
axes[1].invert_yaxis()
更改为ascii
对我不起作用。
但是将我的项目从包含Unicode字符(例如汉字)的目录移动到not-located-unicode-chars-directory时,vld确实显示了调用堆栈。