2009-11-09 4 views
2

J'ai téléchargé la source LibC à partir de opensource.apple.com, mais comme il fait partie d'une bibliothèque monolithique /usr/lib/libSystem.B.dylib, devrais-je reconstruire l'ensemble? J'ai un programme en ligne de commande BSD, porté à partir de Linux. Je veux pouvoir définir des points d'arrêt dans les fonctions de LibC et passer à travers. J'essaie de me rapprocher de ce qui semble être de la corruption de tas dans mon programme (ce qui ne se produit pas sous Linux - je l'ai déjà ramené sous Linux et y lancer memcheck.)Sur Mac OS X, comment obtenir une version de débogage de System/LibC pour le débogage au niveau de la source?

Répondre

0

Avez-vous regardé le Kernel Debug Kit d'Apple (http://developer.apple.com/sdk/)? Je sais qu'il contient des symboles de noyau, mais je ne suis pas sûr que libc fasse partie du SDK.

0

Vous pouvez créer Valgrind vous-même - soit en utilisant la dernière version publiée en 10.5, soit en regardant le bug tracker pour le bug de support de Snow Leopard, qui a un patch.

Alternativement, essayez les outils de débogage de la mémoire dans le malloc (3) manual.

+0

J'ai essayé valgrind sur Snow Leopard. J'ai seulement dû contourner les syscalls que le patch ne couvre pas - sigwait() par exemple. (Expérience de portage utile.) À la fin, valgrind ne m'a pas dit plus que ce que le débogueur a fait - Invalid Write (à travers une valeur de pointeur trashed). Je veux toujours être capable de passer par l'appel libC pour voir quand le pointeur devient invalide. Merci quand même. –