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

12

我尝试在使用"Visual Studio 2017"平台工具集的Visual Studio 2017中使用Visual Leak Detector。我已经设置了 include 目录和 library 目录,生成调试信息也打开了。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

也许有人知道如何启用行号解析。

谢谢


我正在使用vs2019,但选项“生成调试信息(/DEBUG)”不起作用。我将其更改为“生成针对共享和发布优化的调试信息(/DEBUG:FULL)”,现在它可以正常工作了。 - Xiaoyan
2个回答

11

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


10
谢谢。将“生成调试信息”更改为“生成优化共享和发布的调试信息(/DEBUG:FULL)”就可以了,仅仅生成调试信息是不够的。 - pulp
@pulp:如果可以的话,我会拥抱你的。对我来说,只是改变为/DEBUG:FULL就解决了问题,让我免于深深的绝望! - Markus Sabin

2
仅仅将链接器设置更改为/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 注意:根据您拥有的IDE版本,您可能需要将“Professional”替换为“Community”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接