最新要闻
- 每日简讯:西门子医疗Syngo Carbon助力贵安医院打破数据孤岛,加速智慧医院建设
- 每日快播:谁是更好的甜点处理器?锐龙5 7600、酷睿i5-13400对比评测:游戏差距大到不敢相信
- 终于结束了 特斯拉“退一赔三”案二审败诉后申请再审:法院驳回
- 大连地铁敞门行驶 线路刚开12天:客服称“原因正在调查”
- 快资讯丨00后女生毕业当猪场保育员:她认为这行业很有潜力
- 世界快资讯丨微软反戈一击 反垄断战火引至日本本土
- 当前头条:东南亚出游降温:机票降幅达40%
- 【天天快播报】促消费,振内需,康佳加速业务高质量发展
- 世界第一名宇航员!尤里·加加林坠机遇难地点照片首次公开
- 每日看点!真的可以免费坐高铁了!用12306积分兑换:官方教程收好
- 焦点速递!杭州地铁现打工人专线 网友:通勤都不让闲着
- 环球观察:《指环王:力量之戒》片场马匹死亡 动保组织谴责:剥削动物
- 魅族20系列大杯曝光:120Hz E6直屏、12GB+512GB组合
- 核磁共振增强剂的危害_核磁共振增强剂的危害
- 环球热文:高德、阿里云发布全新车路协同方案 夜间开车像开了上帝视角
- 世界热文:瑞幸咖啡被吐槽喝完3口剩下全是冰 客服:门店按配方比例制作
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【Visual Leak Detector】配置项 ReportEncoding
说明
使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 ReportEncoding 的使用方法。 同系列文章目录可见 《内存泄漏检测工具》目录
【资料图】
目录- 说明
- 1. 配置文件使用说明
- 2. 设置输出报告的编码格式
- 2.1 测试代码
- 2.2 ReportEncoding = ascii 时的输出
- 2.3 ReportEncoding = unicode 时的输出
- 2.4 输出结果对比
1. 配置文件使用说明
在程序中通过 #include "vld.h"
的方式检测内存泄漏时,VLD 首先会尝试在程序的生成目录下读取 vld.ini
文件,若未读取成功,则会尝试在 VLD 的安装目录下读取 vld.ini
文件,若仍未读取成功,则会使用内置的默认配置,内置的默认配置如果不动源码是无法更改的,因此通过修改相应目录下的 vld.ini
文件来定制 VLD 功能是最好的选择。当配置参数等号右边为空,或者给配置了不合法值时,在使用过程中会被程序重置到默认值。
2. 设置输出报告的编码格式
参数名:ReportEncoding
。
有效赋值:ascii
,unicode
。
默认值:ascii
。
功能说明:设置输出报告的编码格式。默认是 ascii
编码,若改为 unicode
编码,控制台输出报告的同时会自动将报告输出到文本文件中(即使没有人为设置输出到文件)。由于调试器 Debugger
是不支持 unicode
字符的,所以这个配置只对显示的内存数据形式有影响,当泄露块中包含 unicode
字符时,这个配置的效果才能体现。若项目路径中含有 unicode
字符,ascii
编码时将无法显示调用堆栈信息,改为 unicode
有时候则能正常显示,详见 StackOverflow vld displays empty call stack。
2.1 测试代码
#include #include "vld.h"void testFun(){ QString str = QStringLiteral("汉字unicode"); char *ptr = new char[30](); QByteArray Block = str.toLocal8Bit(); memcpy(ptr, Block.constData(), Block.size()); printf("ptr = %08x, *ptr = %s.\n", ptr, ptr);}int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); testFun(); return a.exec();}
测试环境:QT 5.9.2,MSVC 2015 32bit,Debug模式,VLD 版本为 2.5.1,VLD 配置文件只对该参数做修改,测试工程所在路径为:E:\Cworkspace\Qt 5.9\QtDemo\testVLD
。
2.2 ReportEncoding = ascii 时的输出
标准输出窗显示:
ptr = 0119aa60, *ptr = 汉字unicode.
VLD 输出报告:
Visual Leak Detector read settings from: D:\Program Files (x86)\Visual Leak Detector\vld.iniVisual Leak Detector Version 2.5.1 installed.WARNING: Visual Leak Detector detected memory leaks!---------- Block 1 at 0x0119AA60: 30 bytes ---------- Leak Hash: 0x7A25A79D, Count: 1, Total 30 bytes Call Stack (TID 2596): ucrtbased.dll!malloc() f:\dd\vctools\crt\vcstartup\src\heap\new_array.cpp (15): testVLD.exe!operator new[]() + 0x9 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (7): testVLD.exe!testFun() + 0x10 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (19): testVLD.exe!main() f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): testVLD.exe!invoke_main() + 0x1B bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): testVLD.exe!__scrt_common_main_seh() + 0x5 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): testVLD.exe!__scrt_common_main() f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): testVLD.exe!mainCRTStartup() KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0x11E bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0xEE bytes Data: BA BA D7 D6 75 6E 69 63 6F 64 65 00 00 00 00 00 ....unic ode..... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........Visual Leak Detector detected 1 memory leak (66 bytes).Largest number used: 66 bytes.Total allocations: 66 bytes.Visual Leak Detector is now exiting.
2.3 ReportEncoding = unicode 时的输出
标准输出窗显示:
ptr = 0141bbe8, *ptr = 汉字unicode.
VLD 输出报告(控制台):
Visual Leak Detector read settings from: D:\Program Files (x86)\Visual Leak Detector\vld.iniVisual Leak Detector Version 2.5.1 installed.NOTE: Visual Leak Detector: Unicode-encoded reporting has been enabled, but the debugger is the only selected report destination. The debugger cannot display Unicode characters, so the report will also be sent to a file. If no file has been specified, the default file name is ".\memory_leak_report.txt". Generating a Unicode (UTF-16) encoded report. Outputting the report to the debugger and to E:\Cworkspace\Qt 5.9\QtDemo\build-testVLD-Desktop_Qt_5_9_2_MSVC2015_32bit-Debug\memory_leak_report.txtWARNING: Visual Leak Detector detected memory leaks!---------- Block 1 at 0x0141BBE8: 30 bytes ---------- Leak Hash: 0x7A25A79D, Count: 1, Total 30 bytes Call Stack (TID 20200): ucrtbased.dll!malloc() f:\dd\vctools\crt\vcstartup\src\heap\new_array.cpp (15): testVLD.exe!operator new[]() + 0x9 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (7): testVLD.exe!testFun() + 0x10 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (19): testVLD.exe!main() f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): testVLD.exe!invoke_main() + 0x1B bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): testVLD.exe!__scrt_common_main_seh() + 0x5 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): testVLD.exe!__scrt_common_main() f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): testVLD.exe!mainCRTStartup() KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0x11E bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0xEE bytes Data: BA BA D7 D6 75 6E 69 63 6F 64 65 00 00 00 00 00 ??湵捩摯e.. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........Visual Leak Detector detected 1 memory leak (66 bytes).Largest number used: 66 bytes.Total allocations: 66 bytes.Visual Leak Detector is now exiting.
VLD 输出报告(文件 memory_leak_report.txt
):
Visual Leak Detector Version 2.5.1 installed.NOTE: Visual Leak Detector: Unicode-encoded reporting has been enabled, but the debugger is the only selected report destination. The debugger cannot display Unicode characters, so the report will also be sent to a file. If no file has been specified, the default file name is ".\memory_leak_report.txt". Generating a Unicode (UTF-16) encoded report. Outputting the report to the debugger and to E:\Cworkspace\Qt 5.9\QtDemo\build-testVLD-Desktop_Qt_5_9_2_MSVC2015_32bit-Debug\memory_leak_report.txtWARNING: Visual Leak Detector detected memory leaks!---------- Block 1 at 0x0141BBE8: 30 bytes ---------- Leak Hash: 0x7A25A79D, Count: 1, Total 30 bytes Call Stack (TID 20200): ucrtbased.dll!malloc() f:\dd\vctools\crt\vcstartup\src\heap\new_array.cpp (15): testVLD.exe!operator new[]() + 0x9 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (7): testVLD.exe!testFun() + 0x10 bytes e:\cworkspace\qt 5.9\qtdemo\testvld\main.cpp (19): testVLD.exe!main() f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): testVLD.exe!invoke_main() + 0x1B bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): testVLD.exe!__scrt_common_main_seh() + 0x5 bytes f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): testVLD.exe!__scrt_common_main() f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): testVLD.exe!mainCRTStartup() KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0x11E bytes ntdll.dll!RtlGetAppContainerNamedObjectPath() + 0xEE bytes Data: BA BA D7 D6 75 6E 69 63 6F 64 65 00 00 00 00 00 몺훗湵捩摯e.. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........Visual Leak Detector detected 1 memory leak (66 bytes).Largest number used: 66 bytes.Total allocations: 66 bytes.Visual Leak Detector is now exiting.
2.4 输出结果对比
- 当
ReportEncoding = ascii
时,泄漏内存中的数据(汉字unicode
)只有unicode
显示正确,根据句点.
的个数可知一行显示 16 个ascii
字符。 - 当
ReportEncoding = unicode
时,报告会同时输出到生成目录下,默认文件名为memory_leak_report.txt
,根据句点.
的个数可知一行显示 8 个unicode
字符。奇怪的是,不论是在控制台中还是在文件中,泄漏内存中的汉字并没有按期望正常显示,只有最后一个字母e
显示正确,这一现象产生的原因还未找到。对比控制台输出与文件输出,文件输出少了第一行Visual Leak Detector read settings from: D:\Program Files (x86)\Visual Leak Detector\vld.ini
,泄漏数据的显示也略有差别,其他部分两者完全保持一致。
关键词:
-
【Visual Leak Detector】配置项 ReportEncoding
使用VLD内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍VLD配置文件中配置项ReportEncoding的使用方法。
来源: -
每日简讯:西门子医疗Syngo Carbon助力贵安医院打破数据孤岛,加速智慧医院建设
贵州医科大学附属医院贵安医院通过引进西门子医疗SyngoCarbon数据中台,截至2023年初,成就了患者检查量...
来源: 【Visual Leak Detector】配置项 ReportEncoding
数据建模
世界要闻:在.NET7使用NPOI读取Excel如此简单
每日简讯:西门子医疗Syngo Carbon助力贵安医院打破数据孤岛,加速智慧医院建设
每日快播:谁是更好的甜点处理器?锐龙5 7600、酷睿i5-13400对比评测:游戏差距大到不敢相信
终于结束了 特斯拉“退一赔三”案二审败诉后申请再审:法院驳回
笔记本电脑排风扇声音大是怎么回事?笔记本电脑排风扇声音大怎么解决?
nova6最严重的缺点是什么?nova6参数详细价格
哈尔滨有几个电脑城?哈尔滨电脑城地址
折旧率是什么意思?折旧率计算公式
全球今头条!Go语言:通过TDD驱动测试开发为同事写的程序优化提速——初次接触并发与channel
【世界时快讯】非看不可的Redis持久化
选择排序
速递!【Visual Leak Detector】配置项 MaxTraceFrames
flash8怎么下载到电脑上?Flash8的序列号是多少?
大连地铁敞门行驶 线路刚开12天:客服称“原因正在调查”
快资讯丨00后女生毕业当猪场保育员:她认为这行业很有潜力
世界快资讯丨微软反戈一击 反垄断战火引至日本本土
当前头条:东南亚出游降温:机票降幅达40%
环球新动态:机器学习基础06DAY
数据密集型应用存储与检索设计
当前头条:范畴论:迷人的数学花园
环球观天下!智能存储重磅上线:低成本闲时转码
【天天快播报】促消费,振内需,康佳加速业务高质量发展
世界第一名宇航员!尤里·加加林坠机遇难地点照片首次公开
每日看点!真的可以免费坐高铁了!用12306积分兑换:官方教程收好
焦点速递!杭州地铁现打工人专线 网友:通勤都不让闲着
环球观察:《指环王:力量之戒》片场马匹死亡 动保组织谴责:剥削动物
魅族20系列大杯曝光:120Hz E6直屏、12GB+512GB组合
焦点快报!实验一 密码引擎-2-电子钥匙功能测试
CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理
每日视讯:ChatGPT软件技术栈解密
天天微速讯:具有FTP、FTPS和sftp功能的文本编辑器——EditPlus功能介绍
今日热搜:【解答】MySQL MTR的实现原理与优势
核磁共振增强剂的危害_核磁共振增强剂的危害
环球热文:高德、阿里云发布全新车路协同方案 夜间开车像开了上帝视角
世界热文:瑞幸咖啡被吐槽喝完3口剩下全是冰 客服:门店按配方比例制作
世界快消息!育碧正式宣布“单飞”:E3展会再失重要参展商
独此一家!真我GT Neo5 SE梦幻续航组合:100W快充+5500mAh电池
每日速递:迪士尼《小美人鱼》真人电影确认引进内地:或5月上映
世界短讯!关于ChatGPT的一些信息,我画了一张思维导图
当前头条:前端设计模式——解释器模式
世界热点!各部队加强即将退役人员保密教育的一组见闻
焦点速递!男子2天喝4顿后死亡 起诉店家获赔:医生称如此喝酒很伤身
全球实时:价格相差数倍!智能手表比智能手环强在哪里?
昔日明星掌机落幕:任天堂正式关闭3DS游戏商店
最新消息:李想:攻破燃油车 需3步
当前简讯:任天堂爆款续作!《塞尔达传说:王国之泪》新实机今晚公布:5月12日发售
全球今热点:头铁面试官:一个小小的 System.out.println 硬是考了我半个小时,被问懵了。。
【天天播资讯】《Flask Web 开发指南 pt.1》
环球信息:日本北海道一养鸡场发生禽流感疫情
库克喊话:苹果和中国市场30年来密切关联 我们相互成长
今日热讯:告别物理卡槽!iPhone 15将进一步普及eSIM:水货机今后更难了
老人推倒摩托继承人被判赔1.6万元:车主直言被网曝 老人违法不该被宽恕
全球简讯:【国际大宗商品早报】隔夜外盘商品大面积反弹 美油涨超5%芝加哥农产品全线上涨
全球快报:最“丑”绿色车牌或在2年内取消 网友热议电车优待早该结束!国人将车牌代表面子
全球信息:2022年中国市场最畅销10款手机:国人狂买iPhone 13 高端安卓泪奔
天天视讯!昔日超市霸主 家乐福中国内地首店关闭:在北京开了28年
焦点快播:禁售时间已明确 油车还能开多久?中石油回应:新能源拐点还有很长路
天天微头条丨读Java性能权威指南(第2版)笔记30_Java服务器
世界热点评!Linux -mv命令的10个实用例子
全球看热讯:日本动漫演唱会_日本动漫
环球信息:【Visual Leak Detector】配置项 MaxDataDump
C++ 整理
OpenYurt v1.2 新版本深度解读(三):五步搭建一个OpenYurt集群
焦点速读:海外工具站 2022 复盘:商业认知篇
环球关注:泪目!孩子给离世父亲发短信被回复:爸爸也想你
1只花豹偷袭2只大猩猩:居然 全死了?
环球今日讯!别等魔兽国服了 暴雪今日开放全新服务器:自己单干
当蒂法换上《生化4》艾达王的装束:淡妆浓抹总相宜
全球观速讯丨软件、电影、游戏都“免费” 俄罗斯称盗版不再违法:要让奈飞破产
环球看点!樊小纯
前沿热点:美团面试:熟悉哪些JVM调优参数?
全球快看:基于.NET Core + Jquery实现文件断点分片上传
北京白领通勤天花板,单手拎起10秒折叠,网友:老板我需要
今日讯!针刺成小儿科?埃安官宣弹匣电池2.0枪击试验发布会
世界微资讯!手撕HashMap
每日资讯:一些面试高频题目
Synchronized详解
第134篇:解决浏览器的CORS跨域问题(CORS policy: Cross origin requests are only supported for p
环球观速讯丨《生化危机4:重制版》DLC正在开发中 艾达王是你的了
每日快播:深圳暴雨致航班取消 旅客情绪崩溃 跪求起飞 机场回应
环球通讯!全明星的三大遗憾,成就了这场本土篮球盛宴的缺憾之美
【Visual Leak Detector】配置项 AggregateDuplicates
Python毕业设计推荐
实时焦点:RTX 4070定了!还是你们讨厌的192位显存
每日看点!彻底没救了!《Forspoken》发售2个月后:RTX 4090依旧无法60帧
【播资讯】100亿捐款建大学 曹德旺:对标美国斯坦福 每个学生补贴5万
每日信息:做出莫斯利安的光明乳业:掉队了
女员工请假做试管婴儿被拒遭辞退 法院判了:恢复合同
环球观察:Vue 核心(二)
观焦点:HDFS Short-Circuit Local Reads
货币市场日报:3月27日
热消息:4月10日上市 福特F-150猛禽烈焰风暴特别版官图发布 为中国市场而
能抄底了?一汽奥迪补贴经销商清库存 明星车型降价近10万
每日看点!马云回国首谈ChatGPT:机器只有“芯”而人有“心”
国产车赢麻了!报告:中国品牌占俄罗斯新车销量近40%
焦点信息:“高端家用车”?比亚迪汉DM-i试驾 极致的油耗和空间
天天视讯!国产两轮电动车龙头!雅迪2022年营收310亿创纪录:电动自行车销量大增
焦点!通胀压力缓解避险情绪收敛 日债收益率周一全线回升