2011-09-21 1 views
0

Je cherche à développer un cadre, pour lequel je ne veux pas entrer dans les détails. Supposons que je dispose de plus de 100 classes avec plus de 1000 méthodes dans mon application iPhone. Dans ce scénario, je veux ajouter NSLog dans chaque méthode (au début ou à la fin ou les deux) de chaque classe.Ajout de code aux fichiers de classe juste avant la construction - Objectif C

L'ajout manuel de NSLog est possible mais existe-t-il une meilleure solution? Comme l'application de construction de telle sorte que je puisse ajouter ce journal sans que je doive faire un travail manuel.

Merci et salutations,


Denis,

Your answer dans de nombreux forums était le plus utile. Merci beaucoup.

La raison pour laquelle je cherche quelque chose comme ceci est, nous avons beaucoup de projets de client et beaucoup de temps il arrive que nous obtenions quelques accidents ou d'autres problèmes tout QA et UAT. ~ 80% d'entre eux ne sont pas reproductibles ou nécessitent un scénario particulier. Nous utilisions .crash et dsym pour suivre ces problèmes. Mais ce n'est pas si utile dans un tel scénario. Ce que je cherche est de fournir une construction add-hoc qui consignera les étapes que l'utilisateur a suivies afin qu'il soit facile de reproduire ces problèmes.

Actuellement, j'utilise des en-têtes précompilés et la première méthode que vous avez mentionnée (en recherchant le premier accolade d'ouverture puis en le remplaçant par une macro).

Je vais regarder dans DTrace et objc_msgSend comme vous l'avez mentionné. Je vais google dehors pendant ce temps si vous avez des tutoriels préférés ce sera génial.

Merci et salutations, : D

+2

Je vous suggère d'utiliser le débogueur intégré dans Xcode. –

+0

Salut Merci pour votre réponse. Je veux regarder les sorties de nslog sur la console. comment le débogueur peut m'aider à ajouter de nombreux journaux. Je ne t'ai pas compris. – Abhishek

Répondre

0

Vous souhaitez ajouter une installation de trace à votre code?

Apple ne fournit rien de pareil. Vous devrez ajouter votre installation de trace vous-même. Si votre style de code source est cohérent, cela peut être relativement facile à faire automatiquement, par exemple rechercher le premier accolade d'ouverture en suivant une ligne commençant par un signe moins (ou plus) ...

Alternativement, vous pourriez vouloir utilisez les fonctions d'exécution publiques Objective-C pour énumérer toutes les classes et toutes leurs méthodes, puis faites-les tourbillonner chacune d'entre elles avec une autre NSLog avant de passer à l'original.

Vous pouvez également prendre l'implémentation Open Source de objc_msgSend et d'insérer un appel à NSLog au début. Notez que obj_msgSend queue appelle dans la méthode, ce qui vous empêchera d'ajouter un appel lors du retour. Préparez-vous à la production massive bien sûr. Vous souhaiterez peut-être conditionner votre appel à NSLog à la valeur du paramètre selector à objc_msgSend (comme un préfixe commun).

Enfin, la meilleure façon de tracer est probablement d'attacher une sonde DTrace à l'entrée objc_msgSend. Pour la même raison d'appel de queue mentionnée ci-dessus, vous ne serez pas en mesure d'attacher une sonde DTrace à son retour si.La meilleure question est pourquoi voulez-vous faire cela.