如何在Windows下使用Valgrind

本文介绍了Valgrind这款强大的Linux内存调试工具,特别是在Windows子系统WSL中的使用方法,包括Memcheck功能、错误检测类型以及如何在WSL中配置和使用它来检测程序内存问题。
摘要由CSDN通过智能技术生成

Valgrind介绍

Valgrind是一款Linux下(支持 x86、x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和delete),找出内存泄漏问题。 Valgrind 中包含的 Memcheck 工具可以检查以下的程序错误:

  • 使用未初始化的内存 (Use of uninitialised memory)
  • 使用已经释放了的内存 (Reading/writing memory after it has been free’d)
  • 使用超过malloc分配的内存空间(Reading/writing off the end of malloc’d blocks)
  • 对堆栈的非法访问 (Reading/writing inappropriate areas on the stack)
  • 申请的空间是否有释放 (Memory leaks – where pointers to malloc’d blocks are lost forever) malloc/free/new/delete
  • 申请和释放内存的匹配(Mismatched use of malloc/new/new [] vs free/delete/delete [])
  • src和dst的重叠(Overlapping src and dst pointers in memcpy() and related functions)

可惜这么强大的工具(几乎)只能在linux上运行, Windows上是不能直接使用的.好在可以通过Windows下的linux子系统进行使用.

https://www.valgrind.org/downloads/

下面是配置linux子系统并初步使用Valgrind的教程:

配置教程
Windows下linux子系统(WSL)的安装
微软官方有很清晰的教程,在此贴上链接:
https://learn.microsoft.com/zh-cn/windows/wsl/install

WSL 的基本命令 | Microsoft Learn

除了下载,官方文档还含有很丰富的wsl使用教程,顺带都可以详细学习一下.

wsl --install

wsl --list --online

wsl --install -d <DistroName>

Valgrind的简单使用
打开你想要检查的程序(exe)所在的文件夹,右键打开终端(Powersell)
命令wsl用于调用linux中的命令,由于Valgrind只能在linux中使用,因此前面要加上’wsl’
假设你要检测的程序名字是’test.exe’, 输入命令
wsl valgrind .\test
程序开始运行,Valgrind就会对你的程序进行内存分析了.
小技巧: 编译exe文件时,可以增加debug模式, 比方说用
gcc -o test -g test.cpp,
这样Valgrind就会显示出你哪一行的代码运行导致了内存问题.就像gdb一样.
Attention: 这里exe文件名前记得加上.\的文件目录,
我测试的时候不加的话运行的程序不是我提供的有内存泄露问题的exe文件.

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Valgrind是一个Linux/Mac OS X下的内存调试工具,不支持Windows操作系统。但是,在Windows系统下,可以使用其它类似的工具,例如Microsoft Visual Studio中的内存调试工具和Dr. Memory。 以下是在Windows系统下使用Microsoft Visual Studio中的内存调试工具的具体步骤: 1. 安装Visual Studio:在Windows系统下,需要安装Microsoft Visual Studio。可以从官方网站下载安装程序。 2. 配置项目:在Qt Creator中创建一个Visual Studio项目,可以通过在.pro文件中添加以下内容来实现: ``` win32: CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/<版本号>/lib/x64 -l:msvcr<版本号>.dll else:win32: CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/<版本号>/lib/x64 -l:msvcr<版本号>d.dll else:unix: LIBS += -L$$PWD/../../../../../Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/<版本号>/lib/x64 -lmsvcr<版本号> INCLUDEPATH += $$PWD/../../../../../Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/<版本号>/include DEPENDPATH += $$PWD/../../../../../Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/<版本号>/include win32: CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../Program Files (x86)/Windows Kits/10/Lib/10.0.<版本号>/ucrt/x64 -lucrt.lib else:win32: CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../Program Files (x86)/Windows Kits/10/Lib/10.0.<版本号>/ucrt/x64 -lucrtd.lib else:unix: LIBS += -L$$PWD/../../../../../Program Files (x86)/Windows Kits/10/Lib/10.0.<版本号>/ucrt/x64 -lucrt INCLUDEPATH += $$PWD/../../../../../Program Files (x86)/Windows Kits/10/Include/10.0.<版本号>/ucrt DEPENDPATH += $$PWD/../../../../../Program Files (x86)/Windows Kits/10/Include/10.0.<版本号>/ucrt ``` 其中,<版本号>是Visual Studio和Windows SDK的版本号,需要根据实际情况进行修改。 3. 启用内存调试:在Visual Studio中打开项目,选择“调试”->“启用内存错误检查”菜单,启用内存调试。 4. 运行程序:在Qt Creator中编译程序,并在Visual Studio中启动调试,运行程序。 5. 查看分析结果:Visual Studio会输出检测结果,包括内存泄漏情况和内存错误信息。可以根据输出结果来定位和解决问题。 需要注意的是,内存调试工具可能会影响程序的性能,因此在正式发布程序前,应该关闭内存调试,确保程序的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值