Jakie są kroki do naśladowania do debugowania wycieku pamięci żartem?

głosy
1

Moje testy żartem wydają się być nieszczelne:

wprowadzić wprowadzić

Jakie są kroki do debugowania recommanded tego rodzaju problem?

Jestem nowy w tego rodzaju problemu. Jak widać, próbowałem przechodzącą w opcji udokumentowanych żartem (--forceExit --detectOpenHandles --runInBand --logHeapUsage), ale to nie rozwiązuje mojego problemu.

Utwórz 19/12/2018 o 14:17
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
2

Wpadłem że potrzebowałem do debugowania niektóre testy nieszczelne pamięć i stwierdził, że biorąc Heapdump procesu systemem testów było trudniejsze, niż się spodziewano. Jeśli dodasz --inspectbanderę polecenia CLI będzie sprawdzać tylko jestproces.

W celu zamocowania debuggera do testu Executer wejść node_modules/jest_worker/build/worker.jsi dodać --inspectflagę do pracownika. JEST zwykle pozbawić --inspectflagę.

Użyj tego kodu:

_initialize() {
  const args = process.execArgv.filter(v => !/^--(debug|inspect)/.test(v));
  args.push('--inspect');
  const child = (_child_process || _load_child_process()).default.fork(
    require.resolve('./child'),
    // $FlowFixMe: Flow does not work well with Object.assign.
    Object.assign(
      {
        cwd: process.cwd(),
        env: Object.assign({}, process.env, {
          JEST_WORKER_ID: this._options.workerId,
        }),
        // Suppress --debug / --inspect flags while preserving others (like --harmony).
        execArgv: args,
        silent: true,
      },
      this._options.forkOptions,
    ),
  );
  ...
}

Wreszcie uruchomić swoje testy takie jak ten: node --expose-gc scripts/test.js --env=jsdom --runInBand --logHeapUsage Jeśli nie wysunie Twoja react-scriptsmoże trzeba zrobić, że po pierwsze, zmiana może być przywrócony po zakończeniu debugowania. --runInBandjest ważna jeszcze dostaniesz zbyt wielu pracowników, JEST tworzy jeden mniej niż robotnik masz rdzeni w komputerze, więc trudno będzie do wglądu / pracę z nimi.

Nie dodawaj --inspectflagę na node --expose-gc scripts/test.js --env=jsdom --runInBand --logHeapUsagepolecenia od tego czasu proces JEST odbędzie port domyślny debugger.

Po tym kroku uruchomieniu testów i otwarte Google Chrome, przejdź do chrome://inspect/Twojego proces pojawi się na liście Remote Targets, a stamtąd można zrobić profilowania pamięci i podjąć wysypisk Sterta procesu testowego.

Odpowiedział 05/04/2019 o 07:33
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more