PHP xDebug extension

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von andi.reidies, 20.02.2006.

  1. andi.reidies

    andi.reidies Thread Starter MacUser Mitglied

    Beiträge:
    420
    Zustimmungen:
    0
    MacUser seit:
    08.02.2005
    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 ?
     
  2. b.legt210

    b.legt210 MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    4
    MacUser seit:
    01.03.2006
    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
     
Die Seite wird geladen...