Использование API точечной памяти для создания нескольких снимков одного и того же файла.dmv

Я пытаюсь профилировать мой конкретный код с помощью API точки памяти. Когда я вызываю метод dump(), я ожидаю сделать снимок и сохранить его в dir.

Я пытаюсь сделать два снимка здесь один перед выполнением моего кода и после выполнения моего кода с помощью метода dump().

Можно ли создать оба снимка в одном и том же выходном файле, как мы можем сделать это из автономной точечной памяти?

Ценю ваше предложение. Ниже приведен фрагмент кода

SelfAttach.Attach(new SaveSnapshotProfilingConfig
{
   ProfilingControlKind = ProfilingControlKind.Api,
   SaveDir = "D:\\SelfProfiling",
   RedistDir = "D:\\Softwares\\JetBrains.Profiler.SelfSdk.2017.2.2",
   ProfilingType = ProfilingType.Memory,
   ListFile = "D:\\snapshot_list.xml" 
});

while (SelfAttach.State != SelfApiState.Active)
{
     Thread.Sleep(250);  // wait until API starts
}

if (MemoryProfiler.IsActive)
{
   MemoryProfiler.Dump();
   MyMethodTobeProfiled();
   MemoryProfiler.Dump();
}

if (MemoryProfiler.CanDetach)
   MemoryProfiler.Detach();

2 ответа

Я предполагаю, что вы можете использовать dotMemory Command Line Profiler вместо "Self profiling" API для удовлетворения ваших потребностей.

Запустите средство командной строки dotMemory. Определите, что профилировщик уже подключен к вашему приложению, для этого вам нужно проанализировать вывод процесса CLT dotMemory.

Итак, псевдокод, чтобы получить то, что вам нужно

dotMemory.exe attach --service-output --use-api "your_app_PID"

// then the message will be printed to output
// ##dotMemory["connected",{"pid":your_app_PID,"name":"your_app_NAME.exe"}]
wait for this message

// the rest of your code remains the same
// and you need only JetBrains.Profiler.Windows.Api.dll
// no more need JetBrains.Profiler.Windows.SelfApi.dll
if (MemoryProfiler.IsActive)
{
    MemoryProfiler.Dump();
    MyMethodTobeProfiled();
    MemoryProfiler.Dump();
}

if (MemoryProfiler.CanDetach)
   MemoryProfiler.Detach();

Подробнее о профилировщике командной строки dotMemory здесь

Можно ли создать оба снимка в одном и том же выходном файле, как мы можем сделать это из автономной точечной памяти?

Снимок - это обычно куча файлов. .dmw это архив снимка. Это дизайн сейчас. Причина заключается в возможности немедленно начать отправку снимка на удаленный хост. Это требование R#.

Другие вопросы по тегам