Narzędzia użytkownika

Narzędzia witryny


debugowanie_w_rstudio

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja Both sides next revision
debugowanie_w_rstudio [2014/11/02 20:51]
zozlak [Nie da się zdefiniować breakpoint-a wewnątrz funkcji anonimowej]
debugowanie_w_rstudio [2014/11/02 20:56]
zozlak
Linia 4: Linia 4:
  
 W dalszej części korzystać będę z nomenklatury RStudio, czyli np. mówić o breakpoint-ach bez wchodzenia w to, jak tak naprawdę są one realizowane na poziomie R. W dalszej części korzystać będę z nomenklatury RStudio, czyli np. mówić o breakpoint-ach bez wchodzenia w to, jak tak naprawdę są one realizowane na poziomie R.
 +
 +===== Jak debuguje się w RStudio? =====
 +
 +  * {{https://​support.rstudio.com/​hc/​en-us/​articles/​200713843-Debugging-with-RStudio|Debugging with RStudio}}
 +  * {{https://​support.rstudio.com/​hc/​en-us/​articles/​200534337|Breakpoint Troubleshooting}}
  
 ===== Co nas denerwuje w debugowaniu w R? ===== ===== Co nas denerwuje w debugowaniu w R? =====
Linia 17: Linia 22:
 ==== Nie da się zdefiniować breakpoint-a wewnątrz funkcji anonimowej ==== ==== Nie da się zdefiniować breakpoint-a wewnątrz funkcji anonimowej ====
  
-To już przeszłość+**W R 3.1 już można!**
  
-Jest to szczególnie uciążliwe podczas stosowania bloków //​tryCatch()//,​ bowiem kod między nawiasami //{// i //}// też tak naprawdę jest funkcją anonimową (sic!). +Możliwe obejścia ​we wcześniejszych wersjach:
- +
-Niestety jest ono ściśle związane z techniczną realizacją breakpoint-ów na poziomie R. +
- +
-Możliwe obejścia:+
  
   * W ogóle nie korzystać z funkcji anonimowych,​ np.<​code>​wynik = sapply(dane,​ function(x){ zrób coś });   * W ogóle nie korzystać z funkcji anonimowych,​ np.<​code>​wynik = sapply(dane,​ function(x){ zrób coś });
Linia 29: Linia 30:
 policz = function(x){ zrób coś } policz = function(x){ zrób coś }
 wynik = sapply(dane,​ policz)</​code>​ wynik = sapply(dane,​ policz)</​code>​
-  * Ustawienie breakpoint-u w linii wywołującej funkcję anonimową i skorzystanie z komendy //step into// debugera. Co prawda będziemy musieli krokowo przejść przez cały kod R wykorzystywany do wywołania funkcji anonimowej (np. kod funkcji //​tryCatch()//,​ //​sapply()//,​ itp.), ale w końcu doczołgamy się także do naszej funkcji anonimowej. 
   * **Wstawienie wewnątrz funkcji anonimowej komendy //​browse()//​.**   * **Wstawienie wewnątrz funkcji anonimowej komendy //​browse()//​.**
  
Linia 50: Linia 50:
     * Aby to zrobić klikamy na interesującej nas funkcji stosu wywołań - pole z listą zmiennych automatycznie dostosuje swoją zawartość do kontekstu wywołania danej funkcji.     * Aby to zrobić klikamy na interesującej nas funkcji stosu wywołań - pole z listą zmiennych automatycznie dostosuje swoją zawartość do kontekstu wywołania danej funkcji.
     * Umożliwia to prześledzenie argumentów wywołania funkcji, w której coś poszło nie tak.     * Umożliwia to prześledzenie argumentów wywołania funkcji, w której coś poszło nie tak.
-      * Także funkcji anonimowych!+      * Także funkcji anonimowych.
  
  
Linia 70: Linia 70:
   * usuwamy definicję funkcji //X()// z pamięci: //rm(X)//;   * usuwamy definicję funkcji //X()// z pamięci: //rm(X)//;
   * wczytujemy cały projekt (//​CTRL+SHIFT+L//​ albo //​devtools::​load_all()//​).   * wczytujemy cały projekt (//​CTRL+SHIFT+L//​ albo //​devtools::​load_all()//​).
 +
debugowanie_w_rstudio.txt · ostatnio zmienione: 2015/01/30 10:42 przez zozlak