PHP xDebug extension

andi.reidies

andi.reidies

Aktives Mitglied
Thread Starter
Dabei seit
08.02.2005
Beiträge
420
Reaktionspunkte
0
Hi Folks,

habe versucht, auf meiner Entwickler-Kiste die xDebug-Extension für PHP5.1.2 einzurichten, damit ich über Komodo meine Skripte debuggen kann.

Leider scheint das nicht zu funktionieren.

Daraufhin hab ich mir die aktuellen Sourcen von xdebug geladen und lokal übersetzt.

Das Modul nach /usr/local/php5/lib kopiert und meine PHP.ini entsprechend angepasst.

Läuft aber scheinbar immer noch nicht - wenn ich der Ausgabe von php -m oder phpinfo() trauen darf ;-)

In meiner php.ini steht folgender Eintrag:

zend_extension=xdebug.so

Wie haltet ihr das mit dem Debuggen von PHP Code ?
 
Hi Andi,

da ich selbst auch mit nem Mac arbeite und recht viel PHP programmiere, wollte ich dir kurz meine Erfahrungen aus dieser Richtung mitteilen.

1. XDebug: hat bei mir niemals funktioniert.

2. Advanced PHP Debugger (http://www.php.net/manual/de/ref.apd.php) funktioniert soweit, ist aber etwas "umständlich". Hauptmanko an dem Ding ist für mich: Die Ermittlung des benutzten Speichers ist nur mit --with-memory-limit möglich. Das hat bei meinen Versuchen PHP zu kompilieren allerdings nur bis zur Version 5.0.2 geklappt. Danach scheint die Option wohl deaktiviert zu sein ??? Dein Build ist wohl auch ohne, zumindest soweit ich es aus deiner phpinfo() gesehen habe.

3. "Quick'nDirty:
Da für mich die Ermittlung des momentan belegten Speichers aber grade sehr wichtig war, habe ich mir eine eigene kleine Funktion geschrieben. Die sieht wie folgt aus:

function mem_test()
{
$pid = getmypid();
$prozesse = array();
$infos = "";
$php_prozess = "";
$php_infos = array();
exec('top -l 1', $prozesse);
//print_r($prozesse);

foreach ($prozesse as $prozess)
{
// 1. Info-Zeile festhalten
if (strpos("XXX".$prozess, "PID ")) $infos = trim($prozess);
// 2. Zeile des aktuellen PHP-Prtozesses festhalten
if (strpos("XXX".$prozess, $pid." httpd")) $php_prozess = trim($prozess);
}
$infos = split("[ ]{1,}", $infos);
$php_prozess = split("[ ]{1,}", $php_prozess);

for ( $i = 0; $i < count($infos); $i++) $php_infos[$infos[$i]] = $php_prozess[$i];

//print_r($php_infos);

return $php_infos['VSIZE'];
}

Der "Clou" an der Geschichte ist die Zeile exec('top -l 1', $prozesse); Zugegeben nicht wirklich toll, da kein bisschen plattform-unabhängig. Für meine Zwecke war es aber ganz OK.

Stephan
 
Zurück
Oben Unten