¿Cuáles son los pasos a seguir para pérdida de memoria de depuración en broma?

votos
1

Mis pruebas en broma parecen estar fugas:

introducir introducir

¿Cuáles son los pasos para depurar Recommanded ese tipo de problema?

Soy nuevo en este tipo de problema. Como se puede ver, he tratado de pasar en las opciones documentadas en broma (--forceExit --detectOpenHandles --runInBand --logHeapUsage), pero eso no resuelve mi problema.

Publicado el 19/12/2018 a las 14:17
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

Me encontré con que tenía que depurar algunas pruebas de fugas de memoria y encontró que tomar una Heapdump del proceso de ejecución de las pruebas era más complicado de lo esperado. Si se agrega el --inspectindicador del comando CLI sólo inspeccionará el jestproceso.

Con el fin de adjuntar un depurador a su ejecutor prueba de entrar en node_modules/jest_worker/build/worker.jsy añadir la --inspectbandera para el trabajador. Jest generalmente tira de la --inspectbandera.

Utilizar este código:

_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,
    ),
  );
  ...
}

Finalmente ejecutar las pruebas de esta manera: node --expose-gc scripts/test.js --env=jsdom --runInBand --logHeapUsage Si no ha expulsado de su react-scriptspuede que tenga que hacer eso en primer lugar, el cambio puede ser revertido después de que haya terminado la depuración. --runInBandEs importante lo demás obtendrá demasiados trabajadores, broma crea uno menos trabajadores de lo que tiene núcleos en su ordenador, por lo que será difícil de inspeccionar / trabajo con ellos.

No agregue la --inspectbandera al node --expose-gc scripts/test.js --env=jsdom --runInBand --logHeapUsagecomando desde entonces el proceso se llevará a broma el puerto depurador predeterminado.

Después de este paso se ejecuta sus pruebas y abierta Google Chrome, navegue hasta chrome://inspect/su proceso aparecerá en la lista de Remote Targetsy desde allí se puede hacer perfiles de memoria y tomar vuelcos de almacenamiento dinámico de su proceso de prueba.

Respondida el 05/04/2019 a las 07:33
fuente por usuario

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