2

プロファイリング API を使用して単純な .net プロファイラーを作成する方法を学習しようとしています。

最初のステップでは、プロファイラー dll を読み込んで、ICorProfilerCallback::Initialize からログ ファイルに書き込めるようにしたいだけです。

テスト用の .net コンソール アプリで、次の環境変数を設定しました。

COR_ENABLE_PROFILING="1"

COR_PROFILER="ProfilerTest"-->ここが問題だと思います。GUID を見つける方法がわかりません。ProfilerTest は私の dll の名前です。ここでは、.NET Framework 4 以降では、プロファイラーを登録する必要がないことが示されています。これは、この環境変数を設定する必要がないということですか?

Microsoft の CLRProfiler ソース コードでは、COR_PROFILER_PATH.

ここで完了するのは、dll の初期化関数です。

HRESULT STDMETHODCALLTYPE Profiler::Initialize(IUnknown* pICorProfilerInfoUnk)
{
    // A macro that writes to a log file.
    LOG(INFO);
    auto queryInterfaceResult = pICorProfilerInfoUnk->QueryInterface(__uuidof(ICorProfilerInfo), reinterpret_cast<void **>(&this->corProfilerInfo));

    if (FAILED(queryInterfaceResult))
        return E_FAIL;

    DWORD eventMask = COR_PRF_ALL;

    auto hr = this->corProfilerInfo->SetEventMask(eventMask);

    if (hr != S_OK)
        printf("ERROR: Profiler SetEventMask failed (HRESULT: %d)", hr);

    printf("ERROR: Profiler SetEventMask failed (HRESULT: %d)", hr);
    LOG(INFO);

    return S_OK;
}
4

0 に答える 0