Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

256
Vistas
¿El SDK de Firebase Unity consume excepciones en el subproceso principal?

La segunda mitad del código en uno de mis métodos no se está ejecutando. Unity registra las excepciones del subproceso principal en la consola de forma predeterminada. Aunque mi función se ejecuta en el subproceso principal, no veo ningún registro de error en la consola. Esto hace que encontrar errores y corregir el código sea realmente engorroso.

Aquí está mi método simplificado:

 private void DoInitialize() { LogWarn($"HERE 1.5 item {i}"); // this prints LogWarn($"THIS SHIT {i.shardPrice.amount}"); // this causes a null pointer exception LogWarn($"HERE 1.6 item {i}"); // this doesn't print }

Adjunté el depurador y recorrí el código hasta que encontré la línea que está causando el problema. Comentar la línea hará que el programa se ejecute correctamente. Tras la inspección, resulta que tengo una excepción de puntero nulo en esa línea.

¿Cómo sé que el código se está ejecutando en el hilo principal? Thread.CurrentThread.ManagedThreadId.ToString() antes de la línea defectuosa y en las devoluciones de llamada de Start() y me aseguro de que la identificación sea la misma.

Aquí está el seguimiento de la pila del hilo justo antes de que vaya a algún lugar aleatorio para el que no tengo los símbolos. Mi única explicación para esto es que los métodos de Firebase en la parte inferior de la pila detectan la excepción y no permiten que se propague a Unity. ingrese la descripción de la imagen aquí

Aquí están mis preguntas:

  1. ¿Me estoy perdiendo algo en mi diagnóstico?
  2. ¿Cómo puedo confirmar que Firebase detecta las excepciones? El código SDK no está en github, por lo que no puedo ver el código. ¿Puede alguien del equipo de Firebase verificar esto?
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Me di cuenta de que, dado que firebase usa C# Tasks, se espera que se detecten las excepciones. Escribí un método auxiliar para imprimir excepciones de tareas en la consola. Puede usarlo para tareas que espera tener éxito (al igual que el código normal de Unity).

 public static class TaskExts { public static void LogExceptionIfFaulted(this Task task) { task.ContinueWithOnMainThread(t => { if (t.IsFaulted) { Debug.LogException(t.Exception.Flatten().InnerException); } }); } }

uso

 FirebaseRemoteConfig.FetchAsync(TimeSpan.Zero).ContinueWithOnMainThread(task => { // custom code which may throw exceptions }).LogExceptionIfFaulted();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda