Ruby n00b ici. J'ai copié le code Ruby suivant sur Internet et apporté quelques modifications.
#insert code here
Mais ça ne marche pas!
S'il vous plaît aider. Que puis-je faire pour déboguer le programme moi-même?
Ruby n00b ici. J'ai copié le code Ruby suivant sur Internet et apporté quelques modifications.
#insert code here
Mais ça ne marche pas!
S'il vous plaît aider. Que puis-je faire pour déboguer le programme moi-même?
Utilisez Pry: http://pry.github.com
Comme rampe recommandé: utiliser le soulever! Je peux qu'être d'accord sur ce point.
pry est une bien meilleure repl que la cisr.
Vous devez ajouter
require 'pry'
à votre fichier source et puis insérer un point d'arrêt dans votre code source en ajoutant
binding.pry
à l'endroit où vous voulez avoir un regard sur les choses (c'est comme le déclenchement d'un point d'arrêt dans un classique IDE environnement)
Une fois que votre programme de frappe de l'
binding.pry
ligne, vous serez jetés à droite dans la pry repl, avec tout le contexte de votre programme à portée de main, de sorte que vous pouvez simplement de découvrir tout ce que autour de, enquêter sur tous les objets, changer d'état, et même de modifier le code à la volée.
Je crois que vous ne pouvez pas modifier le code de la méthode que vous êtes actuellement de sorte que vous peut malheureusement pas changer la ligne suivante à exécuter. Mais bon code ruby a tendance à être une seule ligne de toute façon ;-)
Imprimer les variables dans la mesure du possible. (Ce qui est appelé printf débogage), Vous pouvez le faire en cours d'exécution
STDERR.puts x.inspect
ou
STDERR.puts "Variable x is #{x.inspect}"
Si vous voulez faire plus facile de taper, vous pouvez utiliser le exemplor gem.
Transformer les avertissements sur. Si vous êtes en cours d'exécution ruby
puis l'exécuter avec l' -w
switch (par exemple, ruby -w script.rb
). Si vous êtes en cours d'exécution à partir de la cisr, et que vous utilisez une version de ruby avant 1.9.2, tapez $VERBOSE = true
au début de votre session. Si vous avez mal orthographié une variable d'instance, une fois mises en garde, vous pouvez être
avertissement: l'instance de la variable
@valeus
non initialisé
Comprendre le concept d'un binaire chop (la citation suivante est tirée des Pratiques Agile Développeur)
Diviser le problème de l'espace dans la moitié, et de voir qui contient la moitié du problème. Diviser ensuite la moitié de moitié à nouveau, et répéter.
Si vous avez du succès avec un binaire hacher, vous pouvez trouver qu'il y a une seule ligne qui ne fait pas ce que vous attendez pour le faire. Par exemple
[1, 2, 3].include?([1,2])
donne une valeur de false
, même si vous pensez que ça y retourner, true
. Dans ce cas, vous souhaiterez peut-être consulter la documentation. Des sites Web pour la documentation des ruby-doc.orgou APIdock. Dans ce dernier cas, vous auriez du type include?
de la loupe près du coin en haut à droite, choisissez l' include?
qui a Array
dessous (si vous ne savez pas quelle classe [1, 2, 3]
est, tapez [1, 2, 3].class
dans cisr), et vous aurez à les inclure? (Array), qui décrit ce qu'elle fait.
Toutefois, si la documentation n'est pas l'aider, vous êtes plus susceptibles d'obtenir une bonne réponse si vous pouvez poser une question concernant la façon dont la ligne n'est pas ce qu'il devrait, plutôt que de savoir pourquoi un ensemble de script n'est pas de faire ce qu'il devrait.
Toutes les autres réponses donnent déjà presque everyting... Juste un peu plus.
Si vous voulez un peu plus d'IDE débogueur (pas-CLI) et n'a pas peur de l'utiliser Vim comme éditeur, je vous suggère de Vim Ruby Débogueur plugin pour ça.
Sa documentation est assez straitforward, alors suivez le lien et voir. En bref, il vous permet de définir un point d'arrêt à la ligne en cours dans l'éditeur de vue des variables locales dans le nifty fenêtre sur pause, étape au-dessus/en - presque toutes les fonctionnalités du débogueur.
Pour moi, c'était assez agréable à utiliser ce vim débogueur pour le débogage d'une application Rails, bien que riche enregistreur de capacités de Rails presque élimine la nécessité pour elle.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.