3
WinDbg를 사용하여 핸들 할당에 이르는 호출 스택을 kwown 할 수 있는지 궁금합니다.핸들이 할당 된 위치는 어디입니까?
예:
HANDLE h = CreateEvent(NULL, FALSE, FALSE, NULL);
:
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Press ENTER to leak handles." << endl;
_getch();
cout << "Leaking handles" << endl;
for (int i = 0; i < 100; ++i)
{
HANDLE h = CreateEvent(NULL, FALSE, FALSE, NULL);
if (h != NULL)
{
cout << ".";
}
}
cout << "Handles leaked. Press ENTER to exit." << endl;
_getch();
return 0;
}
WinDbg는 그것을 위로이 샘플을 제작하고, 소성 후에는 선 위의 샘플에서, 핸들을 할당 호출 스택을 얻을 수있다 !handle
명령으로 진행하고 있지만 지금까지 진행하지 않았습니다.
이것은 누출 분석을 처리하는 데 적절합니다. 나는 !htrace -enable
과 !htrace -diff
을 알고 있지만, 다른 사용법 시나리오입니다 (어떤 조합 방법이나 다른 사용법 벡터가 없으면 정보를 제공하십시오).