11

我尝试使用带有平台工具集“Visual Studio 2017”的 Visual Studio 2017 的 Visual Leak Detector 我已经设置了包含目录和库目录。正在生成调试信息。exe 的符号已加载。

(如果我将平台工具集更改为“Visual Studio 2013”​​,它会起作用)

使用工具集“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

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

谢谢

4

2 回答 2

10

尝试禁用部分 PDB:在项目属性中单击链接器 - 所有选项 - 生成调试信息,选择“生成为共享和发布优化的调试信息 (/DEBUG:FULL)”,而不是默认的“生成调试信息以获得更快的链接”。

于 2017-06-23T15:16:49.750 回答
1

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

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

有几个具有该名称的 DLL。我把这个复制到我项目的运行时文件夹中(替换我最初从 VLD 安装复制到那里的那个)。

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

注意:您可能需要将“Professional”替换为“Community”,具体取决于您拥有的 IDE 版本。

于 2019-02-16T12:40:22.897 回答