1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-07 19:18:19 +02:00

Profiler changes

This commit is contained in:
Brian Fiete 2022-10-25 08:28:45 -04:00
parent 3122839ea8
commit bb73aced22
2 changed files with 48 additions and 2 deletions

42
IDE/include/BeefDbg.h Normal file
View file

@ -0,0 +1,42 @@
#pragma once
#ifdef BEEFDBG_IMPLEMENTATION
struct BfDebugMessageData
{
int mMessageType; // 0 = none, 1 = error
int mStackWindbackCount;
int mBufParamLen;
const char* mBufParam;
void* mPCOverride;
};
extern "C"
{
BfDebugMessageData gBfDebugMessageData;
}
extern "C" __declspec(dllimport) void DebugBreak();
void BfProfileStart(int sampleRatea = 1000)
{
char str[128];
sprintf(str, "StartSampling\t0\t%d\t0");
gBfDebugMessageData.mBufParam = str;
gBfDebugMessageData.mBufParamLen = strlen(gBfDebugMessageData.mBufParam);
DebugBreak();
}
void BfProfileEnd()
{
gBfDebugMessageData.mBufParam = "StopSampling\t0";
gBfDebugMessageData.mBufParamLen = strlen(gBfDebugMessageData.mBufParam);
DebugBreak();
}
#else
void BfProfileStart(int sampleRatea = 1000);
void BfProfileEnd();
#endif

View file

@ -103,11 +103,15 @@ DbgProfiler::DbgProfiler(WinDebugger* debugger) : mShutdownEvent(true)
mDebugger->AddProfiler(this);
mIdleSymbolNames.Add("NtUserGetMessage");
mIdleSymbolNames.Add("NtUserMsgWaitForMultipleObjectsEx");
mIdleSymbolNames.Add("NtWaitForAlertByThreadId");
mIdleSymbolNames.Add("NtWaitForMultipleObjects");
mIdleSymbolNames.Add("NtWaitForSingleObject");
mIdleSymbolNames.Add("ZwDelayExecution");
mIdleSymbolNames.Add("ZwRemoveIoCompletion");
mIdleSymbolNames.Add("ZwWaitForAlertByThreadId");
mIdleSymbolNames.Add("ZwWaitForMultipleObjects");
mIdleSymbolNames.Add("ZwWaitForSingleObject");
mIdleSymbolNames.Add("ZwWaitForWorkViaWorkerFactory");
}
@ -271,8 +275,8 @@ void DbgProfiler::ThreadProc()
int wantVirtualSamples = (int)((int64)accumMS * mSamplesPerSecond / 1000);
int curSampleCount = wantVirtualSamples - mTotalVirtualSamples;
BF_ASSERT(curSampleCount >= 0);
if (curSampleCount == 0)
//BF_ASSERT(curSampleCount >= 0);
if (curSampleCount <= 0)
continue;
{