Estoy transfiriendo un código C ++ a Android usando NDK y GCC. Básicamente, el código se ejecuta. En un momento, al depurar 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 ha generado código ilegal por alguna razón? Tengo un punto de interrupción en el constructor (que no hace nada) y no se alcanza. Ya hice una reconstrucción completa.
¿Qué podría estar haciendo mal para causar este problema?
android
c++
android-ndk
porting
Aficionado
fuente
fuente
Podría ser algún puntero de función no inicializado, en particular si tiene memoria dañada (entonces el falso vtable de C ++ malos punteros a objetos no válidos podría dar eso).
Por cierto, los
gdb
puntos de observación y los puntos de seguimiento, y también valgrind pueden ser útiles (si están disponibles) para depurar estos problemas. O algún desinfectante de direcciones .fuente
Asegúrese de que todas las funciones con un tipo de retorno no nulo tengan una
return
declaración.Mientras que algunos compiladores proporcionan automáticamente un valor de retorno predeterminado, otros enviarán un SIGILL o SIGTRAP en tiempo de ejecución cuando intenten dejar una función sin un valor de retorno.
fuente