2009-10-07 10 views
33

मैं नेटबीन्स (प्रोजेक्ट-> डीबग) के भीतर से अनुरोध लॉन्च करने के लिए नेटबीन 6.7 और एक्सडीबग का उपयोग कर रहा हूं। यह ठीक काम करता है, और बहुत उपयोगी है।बाहरी अनुरोध पर नेटबीन्स में एक्सडीबग लॉन्च करें

मेरा प्रश्न है: क्या किसी भी अनुरोध में डीबगर को संलग्न करना संभव है, बल्कि नेटबीन्स के भीतर से लॉन्च करने के लिए?

यानी, "डीबग" पर क्लिक करने के बजाय, Netbeans जिससे डिबगर का शुभारंभ किया और अगले अनुरोध है कि में आता है करने के लिए देता है एक मोड में डाल दिया।

मुझे लगता है कि यह एक बेवकूफ सवाल हो सकते हैं, लेकिन अगर यह संभव है, यह बहुत अच्छा होगा।

संपादित करें: थोड़ा अधिक जानकारी

मेरे प्रणाली (उबंटू 9.04) की स्थापना की है इस प्रकार है:

/etc/php5/conf.d/xdebug.ini

zend_extension=/usr/lib/php5/20060613/xdebug.so 

xdebug.remote_enable=on 
xdebug.remote_handler=dbgp 
xdebug.remote_mode=req 
xdebug.remote_host=localhost 
xdebug.remote_port=9000 
xdebug.idekey=netbeans-xdebug 

Netbeans पीएचपी डिबगिंग विकल्पों में से सामग्री चूक पर हैं :

Debugger Port: 9000 
Session ID: netbeans-xdebug 
Stop at the First Line: ticked 

मेरे /etc/hosts फ़ाइल पुनर्निर्देश www.mywebsite.comlocalhost

को अगर मैं Netbeans में डिबग बटन पर क्लिक करें, फिर फ़ायरफ़ॉक्स पता http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug साथ शुरू की है, और डीबगर अपेक्षा के अनुरूप काम करता है।

लेकिन अगर मैं सिर्फ http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug पर ब्राउज़ करता हूं, तो यह नेटबीन्स में डीबगर शुरू नहीं करता है।

मैंने xdebug.remote_host=www.mywebsite.com सेटिंग करने का भी प्रयास किया है, लेकिन इससे कोई फर्क नहीं पड़ता।

इसके अलावा, मैंने xdebug.remote_log सक्षम किया है, और यह नेटबीन के भीतर से शुरू होने के लिए जानकारी दिखा रहा है, लेकिन बाहरी अनुरोधों के लिए कुछ नहीं। इसलिए मुझे नहीं लगता कि एक्सडीबग बाहरी अनुरोध देख रहा है।

+0

नोट: क्या यह अंत में r के साथ remote_handler नहीं है?! –

+0

@ फ्रोनकर हाँ, मुझे लगता है कि आप सही हैं, धन्यवाद। फिक्स्ड। –

+0

मेरे लिए, मुझे नहीं पता था कि वहां तीन स्थान थे जहां मुझे पोर्ट = 9 000 निर्दिष्ट करना था, और मेलसमूह "कनेक्शन के लिए प्रतीक्षा कर रहा था (netbeans-xdebug)": http://stackoverflow.com/a/41768167/470749 – Ryan

उत्तर

40

परियोजना गुण>रन विन्यास>उन्नत>डिबग यूआरएल पर जाएं और खुला वेब ब्राउज़र (*) नहीं है। होस्ट को डीबगर प्रॉक्सी के तहत सेट करें। इन सेटिंग्स को बचाओ। प्रोजेक्ट विंडो में, आपकी प्रोजेक्ट पर: दायां माउस>डीबग (यह डीबग कनेक्शन के लिए सुनना शुरू करता है) पर क्लिक करें। कोई ब्राउज़र शुरू नहीं हुआ है। अपने ब्राउज़र में http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug दर्ज करें। इसे नेटबीन में तोड़ना चाहिए।कम से कम है कि यहाँ क्या होता है :)

(*) आप भी एक पथ मानचित्रण स्थापित करने के लिए हो सकता है -, मेरे लिए यह बिना

+2

बढ़िया, यह चाल है! –

+2

उपर्युक्त करते समय, "फर्स्ट लाइन पर रोकें" के लिए चेकबॉक्स को अनचेक करें यदि आप इसे शीर्ष पर रोकना नहीं चाहते हैं, तो index.php फ़ाइल हर समय भी, लेकिन केवल एक विशिष्ट फ़ाइल में ब्रेकपॉइंट्स पर पहुंचें एक उपपथ उदाहरण, 'http: // localhost/test /' -> TestController.php – tomg

+0

यदि आप [डीबगर शुरू करना] के तीसरे चरण पर सूचीबद्ध ब्राउज़र प्लग-इन का उपयोग करते हैं (http://xdebug.org/ दस्तावेज़/रिमोट), आपको "XDEBUG_SESSION_START = netbeans-xdebug" जोड़ने की आवश्यकता नहीं है। बस इसे अपने ब्राउज़र के साथ चालू और बंद करें। – colan

0

नेटबीन्स के बारे में निश्चित नहीं है, लेकिन मैंने उपयोग किया है कि कोई अन्य आईडीई हमेशा डीबग कनेक्शन के लिए सुन रहा है। आप यूआरएल में क्वेरी स्ट्रिंग ?XDEBUG_SESSION_START=name को जोड़कर xdebug से एक नया डीबग सत्र शुरू कर सकते हैं। अगर नेटबीन सुन रहा है, तो इसे एक नया डीबग सत्र बंद कर देना चाहिए।

अधिक जानकारी के

के लिए http://xdebug.org/docs/remote#browser_session देखें
+0

इसके लिए धन्यवाद, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है - ऐसा लगता है जैसे नेटबीन्स खुद डीबगर शुरू कर सकते हैं, लेकिन यह बाहरी कनेक्शन के लिए नहीं सुन रहा है। मेरे प्रश्न का विस्तार थोड़ा सा। –

17

काम करता है डिफ़ॉल्ट xdebug तक दूरस्थ होस्ट जब से कनेक्ट करने का प्रयास नहीं करेंगे 'XDEBUG_SESSION_START' कुकी/यूआरएल तर्क निर्दिष्ट नहीं किया गया था। आप xdebug को "हमेशा चालू" करने के लिए सक्षम कर सकते हैं, xdebug.remote_autostart को php.ini में 1 पर सेट करके।

इसके अलावा, आपको काम करने के लिए नेटबीन में PHP डीबगर शुरू करना होगा। मुझे अभी तक एक बेहतर समाधान नहीं मिला है, लेकिन आप एक यादृच्छिक फ़ाइल डीबग करने के लिए आने वाले कनेक्शन के लिए PHP डीबगर सुन सकते हैं (फ़ाइल को डीबग करने के लिए CTRL + SHIFT + F5 का उपयोग करें) और फिर जारी रखें (F5 दबाकर) यह ब्रेकपॉइंट पर रुक गया। Netbeans डीबगर तब तक चलना चाहिए जब तक कि आप वास्तव में इसे रोक नहीं देते।

अपडेट: सत्र आईडी (XDEBUG_SESSION_START) की जांच करने वाले नेटबीन के कारण, आपको idekey चर भी सेट करना होगा। उदाहरण के लिए:

xdebug.remote_autostart = 1 
xdebug.idekey = "netbeans-xdebug" 
+2

बिल्कुल सही !, मेरे पूरे जीवन में मुझे आश्चर्य है कि HTTP अनुरोध –

+0

में 'XDEBUG_SESSION_START = session_name' जोड़ने की ज़रूरत के बिना डीबग करने का कोई तरीका होगा या नहीं, मैंने इसे कभी भी नेटबीन्स के साथ काम करने के लिए नहीं मिला है। मैं सफलतापूर्वक (और केवल) एक 'idekey' के साथ डीबग कर सकते हैं, हालांकि। – Pere

1

मैं एक ऐसी ही समस्या (NetBeans पर, मैक OSX) पीएचपी उन्नयन और संकलन/xdebug स्थापित करने के बाद हुआ था। phpinfo ने xdebug को लोड के रूप में दिखाया, लेकिन यह अभी भी कनेक्ट नहीं होगा, और ऊपर सूचीबद्ध सब कुछ करने के बाद भी कोई सफलता नहीं मिली है। फिर मैंने को कम करने की कोशिश की, मेरी PHP.ini फ़ाइल में निर्धारित पैरामीटर की संख्या न्यूनतम आवश्यक पर वापस आ गई। यह मेरे लिए समस्या को हल करने लग रहा था।

; REMOVED (commented) the following 
; xdebug.remote_log=/myfile.log 
;xdebug.extended_info = off 
;xdebug.auto_trace=1 
;xdebug.trace_output_dir=/mydir/myphptracefile.txt 
;xdebug.trace_output_name=php_trace.%c 
;xdebug.collect_params=4 

मैं भी डिफ़ॉल्ट, तो फिर से वापस NetBeans-xdebug से डिफ़ॉल्ट xdebug.idekey नाम दिया।

अपाचे को पुनरारंभ करने के बाद, xdebug ने फिर से काम करना शुरू कर दिया: मुझे यकीन नहीं है कि यह वास्तव में क्या तय किया गया है, लेकिन एक अच्छा प्रारंभिक बिंदु हो सकता है बस अपनी php.ini फ़ाइल में xdebug सेटिंग्स की न्यूनतम संख्या से शुरू करें, फिर धीरे-धीरे यदि आपको उनकी आवश्यकता है तो और जोड़ें। मुझे संदेह है कि यह ट्रेस सेटिंग्स के साथ कुछ करने के लिए हो सकता है, लेकिन यह सुनिश्चित नहीं हो सकता है।

मूलभूत सेटिंग मैं का उपयोग कर समाप्त हो गया थे:

xdebug.remote_enable=on 
xdebug.remote_port=9000 
xdebug.remote_host=localhost 
xdebug.remote_handler=dbgp 
xdebug.idekey=netbeans-xdebug 

यह भी एक अच्छा विचार debugclient (xdebug स्रोत पैकेज में) संकलित करने के लिए, और कमांड लाइन पर डिबगिंग जाँच के रूप में इस आप चाहे xdebug बताएगा है कम से कम अपने आईडीई से चला सकते हैं।

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