2009-10-23 5 views
7

मैं अब debug() का उपयोग कर रहा हूं, लेकिन कभी-कभी मुझे आश्चर्य होता है कि डिबगिंग के लिए कौन से फ़ंक्शंस फ़्लैग किए गए हैं। मुझे पता है कि कोई विशेष फ़ंक्शन फ़्लैग किया गया है या नहीं, यह जानने के लिए आप isdebugged() का उपयोग कर सकते हैं। लेकिन क्या आर के लिए उन सभी कार्यों को सूचीबद्ध करने का कोई तरीका है जो डीबग किए जा रहे हैं?आपको कैसे पता चलेगा कि आर में कौन से फ़ंक्शन डीबगिंग के लिए फ़्लैग किए गए हैं?

उत्तर

7

यह जटिल है, लेकिन यह काम करता है:

find.debugged.functions <- function(environments=search()) { 
    r <- do.call("rbind", lapply(environments, function(environment.name) { 
    return(do.call("rbind", lapply(ls(environment.name), function(x) { 
      if(is.function(get(x))) { 
      is.d <- try(isdebugged(get(x))) 
      if(!(class(is.d)=="try-error")) { 
       return(data.frame(function.name=x, debugged=is.d)) 
      } else { return(NULL) } 
      } 
     }))) 
    })) 
    return(r) 
} 

तुम इतनी तरह से अपने सभी वातावरण के पार चला सकते हैं:

find.debugged.functions() 

या सिर्फ इस के साथ अपने ".GlobalEnv" में:

> find.debugged.functions(1) 
      function.name debugged 
1 find.debugged.functions FALSE 
2     test  TRUE 

यहां मैंने एक परीक्षण फ़ंक्शन बनाया है जिसे मैं डिबगिंग कर रहा हूं।

2

जब तक आप isdebugged() के माध्यम से सबकुछ आग लगाने के लिए कोई फ़ंक्शन लिखना नहीं चाहते हैं, तो मुझे नहीं लगता कि आप कर सकते हैं।

डीबग.c में, फ़ंक्शन do_debug किसी ऑब्जेक्ट पर DEBUG ध्वज सेट करने के लिए क्या जांच है। केवल तीन आर फ़ंक्शन हैं जो do_debug सी कॉल करते हैं: debug, undebug और isdebugged

संबंधित मुद्दे

 संबंधित मुद्दे