Dukungan untuk ini akan datang di R 2.10 dan yang lebih baru. Duncan Murdoch baru saja memposting ke r-devel pada 10 Sep 2009 tentang findLineNum dan setBreapoint :
Saya baru saja menambahkan beberapa fungsi ke R-devel untuk membantu debugging. findLineNum()
menemukan baris mana yang fungsinya sesuai dengan baris kode sumber tertentu; setBreakpoint()
mengambil output dari findLineNum
, dan memanggil trace()
untuk menyetel breakpoint di sana.
Ini bergantung pada memiliki informasi debug referensi sumber dalam kode. Ini adalah default untuk kode yang dibaca source()
, tetapi tidak untuk paket. Untuk mendapatkan referensi sumber dalam kode paket, setel variabel lingkungan R_KEEP_PKG_SOURCE=yes
, atau di dalam R, setel
options(keep.source.pkgs=TRUE)
, lalu instal paket dari kode sumber. Baca ?findLineNum
detailnya tentang bagaimana memberitahukannya untuk mencari di dalam paket, daripada membatasi pencarian ke lingkungan global.
Sebagai contoh,
x <- " f <- function(a, b) {
if (a > b) {
a
} else {
b
}
}"
eval(parse(text=x)) # Normally you'd use source() to read a file...
findLineNum("<text>#3") # <text> is a dummy filename used by
parse(text=)
Ini akan mencetak
f step 2,3,2 in <environment: R_GlobalEnv>
dan Anda bisa menggunakan
setBreakpoint("<text>#3")
untuk mengatur breakpoint di sana.
Masih ada beberapa batasan (dan mungkin bug) dalam kode; Aku akan memperbaikinya