Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

257
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!