Actualmente estoy trasladando un proyecto con unos pocos cientos de archivos de código y dependencias a varias bibliotecas de terceros a Mac Os. Finalmente llegué al punto en que el programa se compila sin advertencias ni errores, pero parece que no ejecuta mi propia función principal.¿Cómo encuentro la función principal (...) de mi programa?
En su lugar, parece ejecutar alguna otra función principal que parece pertenecer a un tercero. Esta función escribe algunos datos de aspecto de diagnóstico para la consola y sale después:
(gdb) continue
Current language: auto; currently c++
//
// This is an automatically generated file.
// Do not edit.
//
const unsigned short expTable[] =
{
0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00,
...
0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00,
};
Debugger stopped.
Program exited with status value:0.
no puedo utilizar el depurador para averiguar dónde reside esta función principal, ya que, mientras que el seguimiento de la pila parece válido, el BGF no lo hace muéstrame el número de línea y el nombre de archivo correctos para cada entrada de pila (Ver this unsolved question para más detalles).
La búsqueda tardó varios minutos en completarse, pero no devolvió ningún resultado.
Mi proyecto está utilizando SDL entre otras bibliotecas, pero soy galardonado con SDL_Main() y los problemas subyacentes y he construido mi proyecto sobre una plantilla de proyecto SDL que funciona perfectamente bien. Así que estoy bastante seguro de que mi propia función principal es válida.
¿Tiene alguna idea de lo que podría estar yendo mal? Actualmente no tengo ideas sobre cómo encontrar y eliminar la función principal deshonesta.
Gracias,
Adrian
EDIT: Como acabo de descubrir, he cometido un error al buscar los archivos de archivos con la cadena "Este es un generan automáticamente". Acabo de encontrar varias docenas de archivos con la misma cadena, todos ellos pertenecientes a FreeImage, una de las bibliotecas de terceros que estoy usando. Entonces, el problema parece estar relacionado con FreeImage, pero aún no estoy seguro de cómo proceder, ya que he compilado Freeimage como una biblioteca con el archivo MacOs adjunto e incluido solo la biblioteca. Intentaré reconstruir una versión más nueva de FreeImage y la veré si eso solucionó mi problema.
Supongo que su flujo es algo así como: gdb foo
b principal
r
¿correcto? – Hasturkun
Normalmente ejecuto gdb a través de XCode, pero traté de usar gdb directamente como describió y obtuve los mismos resultados. –