加载VSPerf170.dll触发xSharedMemoryException异常求助
问题描述
在Windows 10系统上,使用Visual Studio 2022 17.6.2版本构建了名为test的简单Win32应用,代码仅调用LoadLibrary加载VSPerf170.dll并在成功后释放。启动调试时,程序在LoadLibrary处触发异常:Exception thrown at 0x76B8E292 in test.exe: Microsoft C++ exception: xSharedMemoryException at memory location 0x00EFF330。
测试代码
#include <windows.h> int main(int argc, char* argv[]) { HINSTANCE hinstLib = ::LoadLibrary(TEXT("VSPerf170.dll")); if (hinstLib != NULL) { BOOL fFreeResult = ::FreeLibrary(hinstLib); } return 0; }
调试输出
'test.exe' (Win32): Loaded 'D:\program\test.exe'. Symbols loaded. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140d.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbased.dll'. The thread 0x438c has exited with code 0 (0x0). 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\VSPerf170.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. 'test.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Exception thrown at 0x76B8E292 in test.exe: Microsoft C++ exception: xSharedMemoryException at memory location 0x00EFF3C8.
调用栈信息
KernelBase.dll!76b8e292() [Frames below may be incorrect and/or missing, no symbols loaded for KernelBase.dll] VSPerf170.dll!7b8295c2() VSPerf170.dll!7b825c8c() VSPerf170.dll!7b826357() VSPerf170.dll!7b825a95() VSPerf170.dll!7b81bf07() VSPerf170.dll!7b81c06d() VSPerf170.dll!7b82851a() VSPerf170.dll!7b8285fc() ntdll.dll!77aa2ab6() ntdll.dll!77a7de02() ntdll.dll!77a81903() ntdll.dll!77a81a71() ntdll.dll!77a82315() ntdll.dll!77a7e332() ntdll.dll!77a7df76() KernelBase.dll!76b735b6() KernelBase.dll!76b7411a() KernelBase.dll!76b740d2() ucrtbased.dll!7b712c02() ucrtbased.dll!7b70fa93() ucrtbased.dll!7b712c02() ucrtbased.dll!7b6d042e() kernel32.dll!768800f9() ntdll.dll!77a97bbe() ntdll.dll!77a97b8e()
解决方法
VSPerf170.dll是Visual Studio性能分析工具的专属组件,它不能通过LoadLibrary直接单独加载,必须依赖性能分析工具的完整运行环境。
通过性能探查器启动程序
若需使用该DLL的功能,不要直接调试test.exe,而是在Visual Studio中打开调试 > 性能探查器(Alt+F2),选择对应的性能分析工具(比如CPU使用情况),由工具自动启动程序并加载所需的环境组件,即可避免加载异常。检查调试配置
右键项目 → 属性 → 配置属性 → 调试,查看是否意外启用了性能分析相关的附加选项,如有则关闭。更换测试用DLL
如果只是验证DLL加载逻辑,换用普通系统DLL(如user32.dll)测试即可,VSPerf170.dll不属于通用可加载组件,不适合作为测试目标。
内容的提问来源于stack exchange,提问作者DianChen
相关产品推荐
相关产品推荐

