应用程序正在创建muant句柄,但从未释放它们 < >我的C++应用程序正在创建突变句柄。我找不到正在创建句柄的位置,所以我使用了Windbg和!htrace。它没有给出确切的函数名。所有my symbol文件都已加载,应用程序以调试模式构建

应用程序正在创建muant句柄,但从未释放它们 < >我的C++应用程序正在创建突变句柄。我找不到正在创建句柄的位置,所以我使用了Windbg和!htrace。它没有给出确切的函数名。所有my symbol文件都已加载,应用程序以调试模式构建,windbg,handle,resource-leak,Windbg,Handle,Resource Leak,!htrace显示打开的句柄,但不显示句柄打开的确切函数。 痕迹是这样的 Handle = 0x00000d34 - OPEN Thread ID = 0x00003670, Process ID = 0x00004748 0x77a0473c: ntdll!ZwCreateMutant+0x0000000c 0x75d7a0cd: KERNELBASE!CreateMutexExW+0x0000005e 0x75d7bb94: KERNELBASE!CreateMutexExA+0x0000

!htrace
显示打开的句柄,但不显示句柄打开的确切函数。 痕迹是这样的

Handle = 0x00000d34 - OPEN
Thread ID = 0x00003670, Process ID = 0x00004748

0x77a0473c: ntdll!ZwCreateMutant+0x0000000c
0x75d7a0cd: KERNELBASE!CreateMutexExW+0x0000005e
0x75d7bb94: KERNELBASE!CreateMutexExA+0x0000002f
0x75d7bb5c: KERNELBASE!CreateMutexA+0x0000001d

是否有其他方法来调试此问题?

什么应用程序??哪个片段?这是在黑暗中拍摄的。FPO优化会干扰执行堆栈跟踪收集的诸如htrace之类的验证程序。您可以在项目的调试版本上尝试此功能,或者关闭优化功能吗?我关闭了所有优化功能,应用程序仅在调试模式下生成。我运行了一个带有句柄泄漏的示例,该示例将提供完整堆栈跟踪。FPO优化也将关闭。如果您正在构建它,则在CreateMutexA和Variant上设置断点应显示调用堆栈