2010-08-13 19 views
8

UPDATE - lavorare per ottenere WAMP con phpDeveloper/Xdebug attivo. Voglio ancora NetBeans - Voglio solo fare un confronto, vedere se ottengo qualche intuizione.NetBeans-Xdebug funziona, ma non espone alcune variabili PHP


Sto usando NetBeans 6.9 con LAMP e Xdebug a lavorare sul codice PHP. Il display Variables funziona bene, ma ultimamente funziona meno bene. Ad esempio sotto, $authorized dovrebbe essere visibile nel riquadro delle variabili sotto il codice e dovrebbe esporre il suo valore. Ma non mostra, né il suo valore, e il mouse sul codice non aiuta. (L'oggetto $this viene visualizzato e continua, ma l'$authorized non è lì e non avrebbe senso se lo fosse.)

Questo comportamento è coerente. Forse è una funzione della complessità del codice? O utilizzo di oggetti sfrenati? sembra che sia iniziato quando ho preso in considerazione CodeIgniter.

Ovviamente le variabili sono nascoste quando ne ho più bisogno ... o così sembra al povero umano. Cosa mi manca?

NetBeans debugger http://themanthursday.com/wiki/Debugger_Display.png

C'è un esempio migliore di sotto. Quando passo questo codice, Variables visualizza solo Superglobals e $ questo, proprio come nella foto. Non riesco a vedere alcun valore, nemmeno semplici stringhe.

(assillo: Scommetto che il $ CI SuperObject ha qualcosa a che fare con tutto questo ...)

class Product_documents { 
    function getProductImage_all($id) 
//Return an array of all documents for this product 
{ 
    $imgPath = $this->_getProductImage_folder($id); 
    $arrayPossibleFilenames = $this->_getProductImage_possible_files($id); 
    foreach ($arrayPossibleFilenames as $imgFile) { 
    $imgPathFull = $imgPath.$imgFile; 

    $file_exists = get_file_info($imgPathFull); 
    if ($file_exists) 
    { 
    $arrayFilesPresent[] = $imgPathFull; 
    } 
    } 
    return $arrayFilesPresent;   
} 
} 

risposta

8

Fare clic con il pulsante destro del mouse sul riquadro della variabile. Seleziona "Filtri". Troverai il segreto

+0

Grazie Kamal. Ironia della sorte, ho cancellato NetBeans oggi, dopo essere tornato a phpDesigner Pro ... e avendo rinunciato a CodeIgniter qualche tempo fa. Continuerò a guardare questo post con interesse, comunque. A proposito, ho concluso che l'uso di CI del modello singleton era la chiave; Mi chiedo se "il segreto" che hai offerto lo confermerebbe. – Smandoli

+0

Grazie! Ho pensato che fosse un altro problema di xdebug, questo mi farà risparmiare un sacco di tempo – Benoit

+0

Non potresti semplicemente dire di cosa consiste questo "segreto"? Mi piacerebbe sapere senza dover installare NetBeans sul mio iPad. – conny

-1

Prova inizializzazione $ autorizzato a BOOL FALSE.

Ho visto che Netbeans non mi mostra le variabili inizializzate con un valore di ritorno da una funzione senza un doctype, ma non ha abbastanza successo da non farne uno schema.

+0

Ho aggiunto questo appena sopra il punto di interruzione: $ autorizzato = FALSE; Nessuna modifica. E 'questo che intendevi? Inoltre, dopo aver postato ho capito che posso produrre un esempio più interessante di variabili non esposte ... Potrei lavorarci un po 'più tardi. – Smandoli

+0

-1 perché il suggerimento non ha funzionato, quindi la taglia dovrebbe andare da qualche altra parte probabilmente. Ma grazie Fanis per il suggerimento. – Smandoli

+0

Nessun problema. Come ho detto, per me è incostante. Qualcos'altro che ho notato è che a volte non riesce a raccogliere le variabili nell'ambito globale se lo script in fase di debug non ha funzioni. – Fanis

2

Ho visto cose come questa in Netbeans. Mi aspetto che sia solo un bug che riguarda l'interazione di Netbean con XDebug. Una soluzione possibile che ho visto prima è aggiungere un "Watch" per la variabile che non puoi vedere. Per il tuo esempio, puoi andare alla scheda "Orologi" e digitare $authorized. Dovrebbe apparire una volta che è stato impostato.

+0

Grazie, buona idea. Usando un orologio non mi è venuto in mente, solo perché in VBA sembrano essere particolarmente inefficaci. Devo 'pensare fuori dagli schemi' - o per dirlo in modo più corretto, devo pensare in una scatola diversa. – Smandoli

+0

Sì, sfortunatamente, questa casella particolare potrebbe non essere sempre l'ambiente migliore in cui pensare: P –

+0

Mi spiace dirlo, sono stato occupato e non ho provato questo - ma spero di provarlo stasera. Per quanto riguarda l'esperimento WAMP, ho ancora bisogno di finire con un xDebug funzionante. (A volte vorrei solo poter fare il mio lavoro in tempo reale. Ha ha.) – Smandoli

6

sono imbattuto in questo sito che ha un bel link ad una pagina Xdebug che cammina uno attraverso il processo di aggiornamento Xdebug compilando un 'ultima piu' Versione:

http://icephoenix.us/php/xdebug-doesnt-show-local-variables-in-komodo-netbeans-or-eclipse-pdt/

variabili all'interno di oggetti/le classi si stanno mostrando di nuovo! Si!

Nessun orologio, nessun messaggio "questo potrebbe rendere Xdebug fuori di testa" - solo le buone variabili che ora espongono completamente il fallimento della mia soluzione ... (haha).

David

+0

Xdebug 2.1.0RC funziona come il fascino – r15habh

0

Penso che si riduca al modello singleton implementato in CodeIgniter come "Super Object". Non ho mai riavviato questo progetto per testare l'idea di Kamal. Poco dopo aver pubblicato, ho concluso che il singleton era la ragione (non ho cercato di indovinare se Kamal ha la soluzione o no). Quindi la mia risposta a this post.

0

(2015) In php.ini in [xdebug], impostare xdebug.show_local_vars = 1 se si desidera tutte le variabili locali in modalità di debug.

+0

Non fa quello che pensi. Da https://xdebug.org/docs/all_settings :: Quando questa impostazione è impostata su qualcosa! = 0 I dump di stack generati da Xdebug in situazioni di errore mostreranno anche tutte le variabili nella parte più ampia dell'ambito. Fai attenzione che questo potrebbe generare molte informazioni e, di conseguenza, è disattivato per impostazione predefinita. – Dakusan