Déboguer R dans Visual StudioDebug R in Visual Studio

Les outils R pour Visual Studio (RTVS) s’intègrent au système complet de débogage de Visual Studio (consultez Débogage dans Visual Studio).R Tools for Visual Studio (RTVS) integrates with the full debugging experience of Visual Studio (see Debugging in Visual Studio. Cette prise en charge comprend la définition de points d’arrêt, l’attachement à des processus en cours d’exécution, l’inspection et la surveillance de variables ainsi que l’inspection de la pile des appels.This support includes breakpoints, attaching to running processes, inspecting and watching variables, and inspecting the call stack. Cet article explore les aspects du débogage propres à R et à RTVS.This article, then, explores those aspects of debugging that are unique to R and RTVS.

La procédure de lancement du débogueur pour le fichier R de démarrage dans un projet R est la même que celle utilisée pour d’autres types de projets. Vous pouvez donc utiliser la commande Déboguer > Démarrer le débogage, la touche F5 ou l’option Fichier de démarrage source dans la barre d’outils de débogage :Starting the debugger for the startup R file in an R project is the same as for other project types: use Debug > Start Debugging, the F5 key, or the Source startup file on the debug toolbar:

Bouton de démarrage du débogueur pour R

Pour changer le fichier de démarrage, cliquez avec le bouton droit sur un fichier dans l’Explorateur de solutions et sélectionnez Définir comme script R de démarrage.To change the startup file, right-click a file in Solution Explorer and select Set As Startup R Script.

Dans tous les cas, le démarrage du débogueur « approvisionne » le fichier dans la fenêtre interactive, c’est-à-dire que le fichier est chargé et exécuté, comme indiqué dans la sortie de la fenêtre interactive :In all cases, starting the debugger "sources" the file in the interactive window, which means loading it and running it there as shown in the interactive window's output:

> rtvs::debug_source("c:/proj/rproject1/rproject1/script.R")
Sourcing: c:\proj\rproject1\rproject1\script.R
Sourcing: c:\proj\rproject1\rproject1\Settings.R

Notez que la fonction rtvs::debug_source est utilisée pour approvisionner le script.Notice that the rtvs::debug_source function is used to source the script. Cette fonction est nécessaire, car RTVS doit modifier votre code en préparation du débogage.This function is required because RTVS needs to modify your code in preparation for debugging. Si vous utilisez une commande d’approvisionnement RTVS et qu’un débogueur est attaché, Visual Studio utilise automatiquement rtvs::debug_source.When using any RTVS sourcing command and a debugger is attached, Visual Studio automatically uses rtvs::debug_source.

Vous pouvez aussi attacher manuellement le débogueur directement à partir de la fenêtre interactive en utilisant l’une des commandes suivantes : Outils R > Session > Attacher le débogueur Déboguer > Joindre à la fenêtre interactive R ou Attacher le débogueur dans la barre d’outils de la fenêtre interactive.You can also manually attach the debugger from the interactive window directly using the R Tools > Session > Attach Debugger command, the Debug > Attach to R Interactive command, or the Attach Debugger command on the interactive window's toolbar. Une fois l’opération terminée, il vous appartient d’approvisionner les fichiers à déboguer.Once you have done so, it is your responsibility to source the files that you want to debug. Si vous souhaitez approvisionner manuellement les fichiers, veillez à utiliser rtvs::debug_source à la place de la commande source normale dans R.If you want to manually source the files, make sure that you use rtvs::debug_source and not the regular source command in R.

Cette connexion entre le débogueur et la fenêtre interactive facilite certaines opérations, notamment l’appel (et le débogage) d’une fonction avec des valeurs de paramètre différentes.This connection between the debugger and the interactive window makes it easier to do things like calling (and debugging) a function with different parameter values. Imaginons, par exemple, que vous avez la fonction suivante dans un fichier approvisionné (c’est-à-dire qu’il a été chargé dans la session) :For example, suppose you have the following function in a sourced file (meaning it's been loaded into the session):

add <- function(x, y) {
    return(x + y)
}

Définissez ensuite un point d’arrêt au niveau de l’instruction return.Then you set a breakpoint on the return statement. À présent, dans la fenêtre interactive, si vous entrez add(4,5), le débogueur s’arrête au niveau de votre point d’arrêt.Now, in the interactive window, entering add(4,5) stops the debugger on your breakpoint.

Navigateur d’environnement dans la fenêtre interactiveEnvironment Browser in the interactive window

Quand vous êtes arrêté dans le débogueur, vous êtes également arrêté au niveau de l’invite du navigateur d’environnement dans la fenêtre interactive.When you're stopped in the debugger, you're also stopped at the Environment Browser prompt in the interactive window. L’invite se présente sous la forme Browse[n]>, où n est un nombre.The prompt appears as Browse[n]> where n is a number.

Le navigateur d’environnement prend en charge plusieurs commandes spéciales :The Environment Browser supports a number of special commands:

CommandeCommand DescriptionDescription
nn suivant : exécute l’instruction suivante dans le fichier de code (identique au pas à pas principal).next: runs the next statement in the code file (same as step over).
ss pas à pas détaillé : exécute l’instruction suivante dans le fichier de code et effectue un pas à pas détaillé dans la portée d’une fonction si l’instruction suivante est un appel de fonction.step into: runs the next statement in the code file, stepping into a function scope if the next statement is a function call.
ff terminer : exécute le reste de la portée de la fonction active et retourne à l’appelant (identique au pas à pas sortant).finish: runs the remainder of the current function scope and returns to the caller (same as step out).
c, contc, cont continuer : exécute le programme jusqu’au point d’arrêt suivant.continue: runs the program to the next breakpoint.
NQ quitte : termine la session de débogage.quits: ends the debugging session.
where afficher la pile : affiche la pile des appels dans la fenêtre interactive.show stack: displays the call stack in the interactive window.
helphelp afficher l’aide : affiche les commandes disponibles dans la fenêtre interactive.show help: displays available commands in the interactive window.
<expr><expr> évaluer l’expression dans expr.evaluate the expression in expr.

Navigateur d’environnement dans la fenêtre interactive