如何运行 Valgrind 和其他工具来检查 Visual Studio 代码中的内存泄漏?

How to run Valgrind and other tools to check memory leaks in Visual studio code?

提问人:Stackyquest 提问时间:9/27/2023 最后编辑:Paul FloydStackyquest 更新时间:9/28/2023 访问量:300

问:

我已经在 Visual studio 代码中安装了“Valgrind 任务集成”扩展,并在重新启动 VS 代码并在终端中键入以下 Valgrind 命令, “valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt .mem_leak_fix” 用于修复如下所示的示例 C 测试代码的内存泄漏问题,

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int* mptr = malloc(sizeof(int));
    int* mptr1 = malloc(sizeof(int));
    *mptr = 10;
    *mptr1 = 20;
    printf("mptr: %d\n",*mptr);
    printf("mptr1: %d\n",*mptr1);
    free(mptr1);
    mptr1=NULL; 
    return 0;
}

我得到“术语'valgrind'未被识别为 cmdlet 的名称, 函数、脚本文件或可操作程序。检查名称的拼写,或者 如果包含路径,请验证该路径是否正确,然后重试”。

我已经搜索了很长时间,以了解如何在 Visual Studio 中执行内存泄漏检查很长时间。 请告诉我如何在 Visual Studio 中安装内存泄漏调试器工具并执行内存泄漏操作。请帮帮我

c memory-leaks valgrind 悬空指针

评论

1赞 n. m. could be an AI 9/27/2023
上次我检查时,顺便说一句,几分钟,Valgrind 没有在 Windows 上运行。
0赞 Craig Estey 9/27/2023
作为替代方案,您可以使用以下方式进行编译valgrind-fsanitize=address -g -O0
0赞 Stackyquest 9/27/2023
@Kz2023 他们提到在 Ubuntu 上使用 Valgrid,但我正在使用 Windows Visual Studio
0赞 Stackyquest 9/27/2023
我们可以@CraigEstey在 Windows Visual Studio 上使用它吗?
0赞 Gerhardh 9/27/2023
在 VSCode 中,扩展通常只是将一些工具集成到 VSCode 中。它不带来工具本身。这意味着,您需要先安装 Valgrind,然后才能将其与某些 VSCode 扩展一起使用。或者,当您尝试时,通过在终端窗口中运行命令,根本不使用扩展。不幸的是,这不适用于 Windows。

答:

0赞 Paul Floyd 9/27/2023 #1

学习在终端中运行 Valgrind。开始会容易得多,因为你只会学习一件事 - Valgrind,而不是两件事 - Valgrind 和 VS 代码。

接下来,从最简单的选项开始。您不应该从 .我只建议在你发现错误--verbose--track-origins=yes

Valgrind 不能在 Windows 上本机运行。您需要安装其中一个受支持的平台,请参阅 https://valgrind.org/info/platforms.html。您可以使用 WSL2 https://learn.microsoft.com/en-us/windows/wsl/install 或使用 VirtualBox 或 VMware 或类似的东西。

评论

0赞 Stackyquest 9/27/2023
您的意思是在Visual Studio中运行Valgrid?
0赞 Paul Floyd 9/27/2023
不。终端仿真器。Konsole、Gnome 终端、xterm 或任何你喜欢的东西。我见过的所有 IDE 在集成 Valgrind 方面都做得很糟糕。你不仅要学习额外的IDE知识,而这些东西与你的问题没有直接关系,而且你会失去大量的高级功能。