2009-12-17 8 views
1

Au démarrage de mon application avec gdb, je reçois des erreurs étranges qui ressemblent à:Mac OS X débogage erreur

unable to read unknown load command 0x22 

La trace entière ressemble à quelque chose comme ceci:

[Session started at 2009-12-17 10:28:24 -0500.] 
GNU gdb 6.3.50-20050815 (Apple version gdb-966) (Tue Mar 10 02:43:13 UTC 2009) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "i386-apple-darwin".tty /dev/ttys003 
Loading program into debugger… 
sharedlibrary apply-load-rules all 
warning: Unable to read symbols for "@loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle" (file not found). 
warning: Unable to read symbols from "Sparkle" (not yet mapped into memory). 
unable to read unknown load command 0x22 
unable to read unknown load command 0x22 
Program loaded. 
run 
[Switching to process 9051 local thread 0x2e03] 
Running… 
unable to read unknown load command 0x22 
unable to read unknown load command 0x22 

J'ai essayé tous les outils d'analyse disponibles, n'ont pas été en mesure de trouver des fuites de mémoire ou tout ce qui pourrait causer ces erreurs inconnues.

Aide?

Répondre

1

Ce problème est résolu en deux parties.

Assurez-vous que vous avez la copie Sparkle dans la phase de construction Copy Frameworks.

Deuxièmement, l'ajout du script suivant en tant que buildphase après le Copy Frameworks permet de corriger le chemin de chargement sur certaines machines.

install_name_tool -change "@loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle" "@executable_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle" "$BUILT_PRODUCTS_DIR/$EXECUTABLE_PATH" 

Voici une capture d'écran de ce à quoi ressemble cette buildphase dans mon projet.

Build Phase Example http://grab.by/1OkU

Et voici une capture d'écran de mes étapes cibles.

Target Steps http://grab.by/1fCu

+0

Savior! J'ai lié à une ancienne version de Sparkle que j'ai et les problèmes sont partis. Je vais essayer aussi. Merci! – alyx

+1

Voici un script légèrement amélioré qui supprime le besoin d'ajouter manuellement le nom de votre application dans le chemin: install_name_tool -change "@loader_path /../ Frameworks/Sparkle.framework/Versions/A/Sparkle" "@executable_path /../ Frameworks/Sparkle.framework/Versions/A/Sparkle "" $ BUILT_PRODUCTS_DIR/$ EXECUTABLE_PATH ". Le script provient du Q & R Sparkle à https://answers.launchpad.net/sparkle/+question/46535 –

+0

Mise à jour de la réponse et de la capture d'écran. Merci Martin. –