Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

250
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda