c++ - studio - ¿Qué causa la señal ''SIGILL''?
cmake android studio (3)
Ahora funciona. Para cualquier otra persona que tenga problemas con Android / NDK / GCC / Eclipse, así es como lo resolví:
- Enterrar a un gato muerto a la medianoche cuando la luna llena
- Reiniciar el emulador de dispositivo Android
No he verificado si ambos pasos son realmente necesarios y, de no ser así, cuál es redundante.
Estoy portando un código C ++ a Android usando NDK y GCC. El código básicamente se ejecuta. En un punto, cuando se depura en Eclipse, la llamada
Dabbler::Android::Factory* pFactory = new Dabbler::Android::Factory;
causa este error:
Thread [1] (Suspended: Signal ''SIGILL'' received. Description: Illegal instruction.)
1 <symbol is not available> 0x812feb44
Qué significa eso? ¿El compilador generó código ilegal por algún motivo? Tengo un punto de interrupción en el constructor (que no hace nada), y no se golpea. Ya hice una reconstrucción completa.
¿Qué podría estar haciendo mal para causar este problema?
Podría ser algún puntero a la función no inicializada, en particular si tiene una memoria dañada (entonces, la vtable falsa de los punteros malos de C ++ a los objetos no válidos podría dar eso).
Por cierto, los puntos de observación y puntos de rastreo de gdb
, y también valgrind podrían ser útiles (si están disponibles) para depurar dichos problemas. O algún desinfectante de direcciones .
Significa que la CPU intentó ejecutar una instrucción que no entendió. Esto podría ser causado por la corrupción, supongo, o tal vez se ha compilado para la arquitectura incorrecta (en cuyo caso, habría pensado que el O / S se negaría a ejecutar el ejecutable). No estoy del todo seguro de cuál es el problema de raíz.