Visual Studio での R のデバッグDebugging R in Visual Studio

R Tools for Visual Studio (RTVS) は、Visual Studio の全デバッグ機能と統合されています (「Feature Tour of the Visual Studio Debugger」(Visual Studio デバッガーの機能ツアー) を参照してください)。R Tools for Visual Studio (RTVS) integrates with the full debugging experience of Visual Studio (see Debugging in Visual Studio. このサポートには、ブレークポイント、実行中のプロセスへのアタッチ、変数の検査と監視、コール スタックの検査が含まれます。This support includes breakpoints, attaching to running processes, inspecting and watching variables, and inspecting the call stack. このトピックでは、R および RTVS に固有のデバッグの機能について説明します。This topic, then, explores those aspects of debugging that are unique to R and RTVS.

R プロジェクトのスタートアップ R ファイルに対するデバッガーの起動は、他のプロジェクト タイプと同じです。[デバッグ] > [デバッグ開始]、F5 キー、またはデバッグ ツールバーの [Source startup file](ソース スタートアップ ファイル) を使います。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:

R のデバッガー開始ボタン

スタートアップ ファイルを変更するには、ソリューション エクスプローラーでファイルを右クリックして、[R スタートアップ スクリプトとして設定] を選びます。To change the startup file, right-click a file in Solution Explorer and select Set As Startup R Script.

いずれの場合も、デバッガーを開始すると、ファイルが対話型ウィンドウに "ソース化" されます。これは、ファイルが読み込まれて、次の対話型ウィンドウの出力のように、そこで実行されることを意味します。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

この例では、スクリプトのソース指定に rtvs::debug_source 関数が使用されています。Notice that the rtvs::debug_source function is used to source the script. RTVS はデバッグの準備でコードを変更する必要があるため、この関数が必要です。This function is required because RTVS needs to modify your code in preparation for debugging. RTVS のソース指定コマンドを使用し、デバッガーをアタッチすると、Visual Studio で rtvs::debug_source が自動的に使用されます。When using any RTVS sourcing command and a debugger is attached, Visual Studio automatically uses rtvs::debug_source.

また、対話型ウィンドウから、[R Tools] > [セッション] > [デバッガーのアタッチ] コマンド、[デバッグ] > [R 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. その場合は、ユーザーがデバッグするファイルをソース化する必要があります。Once you have done so, it is your responsibility to source the files that you want to debug. ソース ファイルを手動で指定するには、R で通常の source コマンドではなく、rtvs::debug_source を使用してください。If you want to manually source the files, make sure that you use rtvs::debug_source and not the regular source command in R.

デバッガーと対話型ウィンドウの間のこの接続により、異なるパラメーター値での関数の呼び出し (およびデバッグ) のような作業が簡単になります。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. たとえば、ソース化されたファイル (つまり、セッションに読み込まれているファイル) に、次のような関数があるものとします。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)
}

そして、return ステートメントにブレークポイントを設定します。Then you set a breakpoint on the return statement. 対話型ウィンドウで add(4,5) を入力すると、ブレークポイントでデバッガーが停止します。Now, in the interactive window, entering add(4,5) stops the debugger on your breakpoint.

対話型ウィンドウの環境ブラウザーEnvironment browser in the interactive window

デバッガーで停止しているときは、対話型ウィンドウの環境ブラウザー プロンプトでも停止しています。When you're stopped in the debugger, you're also stopped at the Environment Browser prompt in the interactive window. プロンプトは [Browse[n]>] と表示されます。n は数字です。The prompt appears as Browse[n]> where n is a number.

環境ブラウザーは、いくつかの特別なコマンドをサポートしています。The Environment Browser supports a number of special commands:

コマンドCommand 説明Description
n 次: コード ファイルの次のステートメントを実行します (ステップ オーバーと同じ)。next: runs the next statement in the code file (same as step over).
ss ステップ イン: コード ファイルの次のステートメントを実行し、次のステートメントが関数呼び出しの場合は関数スコープにステップ インします。step into: runs the next statement in the code file, stepping into a function scope if the next statement is a function call.
ff 終了: 現在の関数スコープの残りの部分を実行し、呼び出し元に戻ります (ステップ アウトと同じ)。finish: runs the remainder of the current function scope and returns to the caller (same as step out).
c、contc, cont 続行: 次のブレークポイントまでプログラムを実行します。continue: runs the program to the next breakpoint.
QQ 完了: デバッグ セッションを終了します。quits: ends the debugging session.
wherewhere 履歴を表示: 呼び出し履歴を対話型ウィンドウに表示します。show stack: displays the call stack in the interactive window.
helphelp ヘルプを表示: 使用可能なコマンドを対話型ウィンドウに表示します。show help: displays available commands in the interactive window.
<expr><expr> expr の式を評価します。evaluate the expression in expr.

対話型ウィンドウの環境ブラウザー