2010-09-14 5 views
6

est-il un bon moyen d'exécuter un script et de voir toutes les étapes:Trace le code dans Ruby?

  • Quel code est exécuté
  • Quel fichier le code est en
  • Qu'est-ce qu'il retourne
  • Les messages d'erreur

Ce serait un bon moyen d'apprendre comment un projet open source fonctionne.

N'y a-t-il pas des solutions comme celle-ci pour Ruby?

Par exemple.

require "httparty" 
HTTParty.get "http://www.google.se" 

Ensuite, il courrait le code et montrez-moi tout le code qu'il exécute, dans lequel le fichier et la ligne, retour des objets, des messages d'erreur, etc.

Répondre

5

Tracer peut le faire pour vous http://en.wikibooks.org/wiki/Ruby_Programming/Standard_Library/Tracer

si vous voulez simplement voir les exceptions soulevées, puis exécutez Ruby -d (ou utilisez-debug rubis et exception "Catch")

+0

J'utilise Ruby 1.9.2. Pourquoi n'y a-t-il pas de switch -rtracer quand je cours "ruby --help". Et quand je lance "ruby -rtracer my_ruby_file.rb" il est imprimé comme d'habitude, je ne vois aucune fonctionnalité de traçage. –

+0

@never_had_a_name, ce n'est pas dans '--help' car ce qui * est * documenté est' -rlibrary'; 'tracer' est justement l'une des bibliothèques disponibles. Documenter chaque bibliothèque disponible serait une tâche sans fin. (Chaque bibliothèque intégrée peut être chargée de cette façon, moins, mais cela reste distinct de l'utilisation de la ligne de commande). –

0

utiliser un débogueur? ruby est livré avec un intégré, ou utilise ruby-debug

+0

Est-ce que un débogueur comme ruby- déboguer fais ce dont j'ai besoin? S'il vous plaît lire mon message mis à jour. –

+1

Ceci est vraiment un commentaire, pas une réponse à la question. Veuillez utiliser "ajouter un commentaire" pour laisser un commentaire à l'auteur. –

+0

@RostyslavDzinko Je ne suis pas d'accord. – horseyguy

0

Vous pouvez déclencher une exception, l'attraper puis utiliser la méthode backtrace d'un objet Exception.

+0

Je ne suis pas le gars qui a codé la bibliothèque. Lire ma mise à jour –

2

Il y a Kernel#set_trace_func qui couvre la plupart du temps ce que vous avez besoin:

proc prend jusqu'à six paramètres: un nom d'événement , un nom de fichier, un numéro de ligne, un ID d'objet, une liaison, et le nom d'une classe. proc est invoqué chaque fois qu'un événement se produit .

Je ne suis pas sûr, cependant, qu'entendez-vous par "les messages d'erreur". Si vous faites référence à des exceptions, si vous ne les gérez pas dans votre code, votre code se terminera avec l'exception imprimée.

+0

Lire ma mise à jour –

Questions connexes