Visual Studio에서 R 디버그Debugging R in Visual Studio

RTVS(Visual Studio용 R 도구)는 Visual Studio의 전체 디버깅 환경과 통합됩니다(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 키 또는 디버그 도구 모음의 소스 시작 파일을 사용합니다.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 도구 > 세션 > 디버거 연결 명령, 디버그 > R 대화형에 연결 명령 또는 디버거 연결 명령을 사용하여 대화형 창에서 직접 디버거를 수동으로 연결할 수도 있습니다.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.
형식에 대한 설명where 스택 표시: 대화형 창에 호출 스택을 표시합니다.show stack: displays the call stack in the interactive window.
도움말help 도움말 표시: 대화형 창에 사용 가능한 명령을 표시합니다.show help: displays available commands in the interactive window.
<expr><expr> expr의 식을 계산합니다.evaluate the expression in expr.

대화형 창의 환경 브라우저