본문 바로가기

카테고리 없음

GNU R에서 디버깅

기본적으론 debug(함수이름) 이렇게 하면 디버깅 모드가 잡히고, 이후 그 함수를 실행하면 디버거로 들어간다.
들어간 후엔 엔터나 n 을 누르면 다음 단계로 (gdb에서 다음 단계와 동일), c 를 누르고 엔터치면 continue (gdb에서 continue)이고 나가려면 Q.

안으로 들어가거나 위로 올라가는 방법이 없는 것 같은데 확인 중. 이게 상당히 불편하다. 대신 디버거 상에서 그냥 R 콘솔에서 할 수 있는 일은 전부 다 할 수 있기 때문에 안에서 작업하긴 gdb로 C/C++ 디버깅 할 때 보다 편리했다. 



브레이크 포인트 잡는 법은 아래 참조 (utils 패키지 도움말 화면에서 가져옴) 
 # R 파일 안에 들어 있는, 내가 디버그 하고 싶은 함수 이름이 myfunction 일 때 
# Find what function was defined in the file mysource.R at line 100:
findLineNum("mysource.R#100") # 100번째 행에서 무슨 일 하는지는 파일로 미리 봐 두고, 호출 구조만 이걸로 확인하는 데 쓰자 

# Set a breakpoint in both copies of that function
setBreakpoint("mysource.R#100") # 이렇게 걸고 나면 

debug(myfunction)

myfunction(x, y, z) 

이렇게 하면 디버그 모드가 해당 지점 (100번 째 줄) 부터 시작됨