コード例 #1
0
ファイル: PerfMon.c プロジェクト: BenWibking/hacc-coral
void OnClock(const char *Name){
	int Index;
	Index = FindModuleIndex(Name);
	++Clock[Index].Count;
	Clock[Index].StartTime = (double)clock()/CLOCKS_PER_SEC;
	if (Index > TotClocksUsed) TotClocksUsed=Index;
	return;
}
コード例 #2
0
ファイル: PerfMon.c プロジェクト: BenWibking/hacc-coral
void OffClock(const char *Name){
	int Index;
	Index = FindModuleIndex(Name);
	if (Clock[Index].Count == 0)
		PerfMonError("OffClock called for a routine which was never on!");
	else {
		Clock[Index].ElapsedTime += ((double)clock()/CLOCKS_PER_SEC - Clock[Index].StartTime);
	}
	return;
}
コード例 #3
0
ファイル: Debug.cpp プロジェクト: Sly14/upp-mirror
void Pdb::LoadModuleInfo()
{
	fninfo_cache.Clear();

	ModuleInfo f;
	dword cb = 1;
	HMODULE  h;
	if(!EnumProcessModules(hProcess, &h, sizeof(HMODULE), &cb)) {
		Error();
		return;
	}
	int n = cb / sizeof(HMODULE);
	Buffer<HMODULE> m(n);
	if(!EnumProcessModules(hProcess, m, cb, &cb)) {
		Error();
		return;
	}
	Vector<ModuleInfo> nm;
	for (int i = 0; i < n; i++) {
		MODULEINFO mi;
		if(GetModuleInformation(hProcess, m[i], &mi, sizeof(mi))) {
			ModuleInfo& f = nm.Add();
			f.base = (adr_t)mi.lpBaseOfDll;
			f.size = mi.SizeOfImage;
			int q = FindModuleIndex(f.base);
			if(q >= 0) {
				ModuleInfo& of = module[q];
				f.path = of.path;
				f.symbols = of.symbols;
				of.symbols = false;
				LLOG("Stable " << Hex(f.base) << " (" << Hex(f.size) << "): " << f.path);
			}
			else {
				char name[MAX_PATH];
				if(GetModuleFileNameEx(hProcess, m[i], name, MAX_PATH)) {
					f.path = name;
					if(FileExists(ForceExt(f.path, ".pdb"))) {
						adr_t w = (adr_t)SymLoadModule64(hProcess, NULL, name, 0, f.base, f.size);
						if(w) {
							LLOG("Loading symbols " << Hex(f.base) << '/' << hProcess << " returned base " << Hex(w));
							f.symbols = true;
							LoadGlobals(w);
						}
					}
				}
				LLOG(Hex(f.base) << " (" << Hex(f.size) << "): " << f.path);
			}
		}
	}
	UnloadModuleSymbols();
	module = pick(nm);
	refreshmodules = false;
}
コード例 #4
0
ファイル: PerfMon.c プロジェクト: BenWibking/hacc-coral
long unsigned UsesOfRoutine(const char *Name){
	int Index;
	Index = FindModuleIndex(Name);
	return(Clock[Index].Count);
}
コード例 #5
0
ファイル: PerfMon.c プロジェクト: BenWibking/hacc-coral
void ResetClock(const char *Name){
	int Index;
	Index = FindModuleIndex(Name);
	Clock[Index].ElapsedTime = 0.0;
	return;
}
コード例 #6
0
ファイル: PerfMon.c プロジェクト: BenWibking/hacc-coral
double TimeOfRoutine(const char *Name){
	int Index;
	Index = FindModuleIndex(Name);
	return(Clock[Index].ElapsedTime);
}