使用Visual Studio 2017的Visual Leak Detector:没有源代码行号

时间:2017-06-22 19:46:20

标签: visual-studio-2017 memory-leak-detector visual-leak-detector

我尝试在Visual Studio 2017中使用Visual Leak Detector和Platform Toolset" Visual Studio 2017" 我已经设置了include目录和库目录。正在生成调试信息。加载了exe的符号。

(如果我将平台工具集更改为" Visual Studio 2013"它可以工作)

使用Toolset" Visual Studio 2017" VLD正在检测泄漏但不解决行号:

Visual Leak Detector read settings from: C:\Program Files (x86)\Visual Leak Detector\vld.ini
Visual Leak Detector Version 2.5.1 installed.
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 1 at 0x005ECDB8: 400 bytes ----------
  Leak Hash: 0x36672640, Count: 1, Total 400 bytes
  Call Stack (TID 6284):
    ucrtbased.dll!malloc()
    ConsoleApplication6.exe!0x00361FAD()
    ConsoleApplication6.exe!0x003618BC()
    ConsoleApplication6.exe!0x00361828()
    ConsoleApplication6.exe!0x00361883()
    ConsoleApplication6.exe!0x00361F7E()
    ConsoleApplication6.exe!0x00361DE0()
    ConsoleApplication6.exe!0x00361C7D()
    ConsoleApplication6.exe!0x00361F98()
    kernel32.dll!BaseThreadInitThunk() + 0x12 bytes
    ntdll.dll!RtlInitializeExceptionChain() + 0x63 bytes
    ntdll.dll!RtlInitializeExceptionChain() + 0x36 bytes

也许有人知道一种启用行号解析的方法。

由于

2 个答案:

答案 0 :(得分:9)

尝试禁用部分PDB:在项目属性中单击链接器 - 所有选项 - 生成调试信息,选择“生成调试信息”而不是默认“为更快的链接生成调试信息”。

答案 1 :(得分:1)

仅将链接器设置更改为 / DEBUG:FULL 对我来说还不够。可以使用 / DEBUG:FASTLINK

但是,我必须使用Visual Studio本身中匹配的,最新的 dbghelp.dll ,而不是VLD附带的版本(我使用的是VLD版本2.5.1(在x86模式下)。

有几个使用该名称的DLL。我将其复制到项目的运行时文件夹中(替换了我最初从VLD安装中复制到的那个文件夹)。

X:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ Extensions \ TestPlatform \ Extensions \ Cpp

注意:根据您拥有的IDE版本,您可能必须将“专业”替换为“社区”。