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

298
Visualizações
¿Cuál es la solución para el "error: no se pudo expresar IRGen, no hay error adicional" en Xcode 10.1?

Tenemos un gran proyecto con muchas dependencias traídas a través de Carthage. Cada vez que intentamos mirar una variable en el depurador lldb ( p variablename ), nos da un error: error: Couldn't IRGen expression, no additional error

Ninguna de las soluciones es muy buena. Podemos ejecutar Carthage con --no-use-binaries para evitarlo, pero hace que las compilaciones tomen un tiempo prohibitivo. Podemos usar fr v en algunas variables, pero no en todas. La gente solucionó esto en versiones anteriores de Xcode cambiando los permisos en algunos directorios de Swift, pero no puedo encontrar los directorios correspondientes en Xcode 10.1. Y vi a alguien decir que cambiar el sistema de compilación de un lado a otro lo ayudó, pero eso no funcionó para nosotros.

Así que estoy comenzando esta búsqueda de una solución en Xcode 10.1 específicamente. ¿Alguien más ha descubierto qué está causando este error y/o una buena solución?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Alguien en mi equipo compartió una solución para esto que realmente funciona (no sé si lo descubrió o lo encontró en otro lado):

Establezca un punto de interrupción en la primera línea del método AppDelegate didFinishLaunchingWithOptions . Establezca la acción para este punto de interrupción en: po application

Ahora, cuando ejecute su aplicación, el depurador se detendrá en ese punto de interrupción y mostrará este texto en el panel del depurador lldb (con el nombre de su aplicación en lugar de Foo):

nota: las opciones del compilador Swift para Foo entran en conflicto con las opciones que se encuentran en otros módulos; Al cambiar a un nuevo evaluador de expresiones para Foo, las antiguas variables $R se pierden.

Y luego el depurador lldb funcionará correctamente, capaz de p y po variables y expresiones expr .

No sé por qué funciona, pero funciona, ¡y también de manera confiable!

over 4 years ago · Santiago Trujillo Relatório

0

Un colega y yo encontramos una solución:

Cree un archivo Objective-C en su proyecto Swift. Presiona sí cuando te pregunte por el encabezado de puente.

Test.h

 #import <Foundation/Foundation.h> @interface Test : NSObject - (id)init; @end

Test.m

 #include "Test.h" @implementation Test - (id)init { return self; } @end

MyProject-Bridging-Header.h

 #include "Test.h"

Y ahora: 🎉 no más error: Couldn't IRGen expression, no additional error y puede depurar nuevamente.

Así que creo que solo agregar un encabezado de puente funciona como una solución ...

Pero si eso no funciona:

Agregue un punto de interrupción en AppDelegate.swift en application: UIApplication, didFinishLaunching así y espero que esto ayude:

Punto de interrupción en Xcode

over 4 years ago · Santiago Trujillo Relatório

0

Actualmente existe un requisito estricto de que la versión del compilador Swift que usa para construir su código fuente y la versión de lldb que usa para depurarlo deben provenir de la misma cadena de herramientas. Actualmente, la información de depuración rápida para los tipos es solo una serialización de las estructuras de datos internas del compilador rápido. También depende de la información de la ruta local, lo que dificulta moverse.

Hay un esfuerzo a más largo plazo para cambiar ese diseño, pero por ahora tiene que reconstruir todos sus archivos binarios cada vez que actualiza sus herramientas y no puede usar archivos binarios prediseñados.

Sin embargo, estoy un poco sorprendido de que esto cause un problema diario. Esta reconstrucción completa solo debe ocurrir cuando obtiene nuevas fuentes de Carthage o actualiza sus herramientas, lo que no debería ser tan frecuente. Si está desencadenando reconstrucciones con más frecuencia que eso, tal vez las dependencias no se rastrean correctamente, por lo que se reconstruyen más archivos de los necesarios.

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