Jak debugować wtyczkę za pomocą Xdebug?

12

Byłem w stanie dość łatwo zainstalować i skonfigurować NetBeans 6.9.1 i Xdebug w moim lokalnym środowisku opartym na PHP 5.3.0 (XAMPP).

Mój problem jest teraz następujący: jeśli ustawię punkt przerwania w pliku index.php Wordpress lub innych podstawowych plikach PHP Wordpress, NetBeans poprawnie zatrzyma się w pożądanej pozycji. Jeśli zamiast tego ustawię punkt przerwania na pliku wtyczki, wyzwalanie wykonania kodu NetBeans nie kończy się na tym.

Czy wiesz, jak rozwiązać problem?

AKTUALIZACJA: Więcej informacji o tym, co próbuję debugować

Wtyczka nazywa się Vanilla Forums i ma następującą strukturę plików:

- plugins
  - vanilla-forums
    + assets
    + nbproject
    + templates
      admin.php
      embed.php
      functions.php
      hooks.php
      plugin.php
      sso.php
      widgets.php

Ustawiłem punkt przerwania wewnątrz funkcji o nazwie vf_validate_optionszdefiniowanej w functions.php. Jestem pewien, że ta funkcja jest wykonywana, ale NetBeans się tam nie psuje.

Kaczor
źródło
Jeśli umieścisz throw new Exception('die');oświadczenie po wierszu punktu przerwania, czy to przestanie (w tym sensie, że to zabije / zakończy twoje żądanie)?
hakre
@hakre Tak, zgłasza wyjątek (jestem pewien, że wykonywany jest kod, w którym ustawiony jest punkt przerwania)
Drake
1
@Drake: Czy ten kod jest wykonywany na stronie głównej, czy w wywołaniu Ajax? Uważam, że debuger Xdebug musi być włączony przy pomocy niektórych zmiennych GET lub POST, a następnie ustawia plik cookie, może nie jest włączony dla żądania Ajax?
Jan Fabry
1
Mam dokładnie ten sam problem i nadal nie mogę znaleźć rozwiązania! Używam php nusphere, ale próbowałem Eclipse też bez rezultatów! Jedynym plikiem, który xdebug zatrzymuje w punkcie przerwania, są pliki „core” WordPress. Żaden plik php motywu nie jest debugowalny! Daj mi znać, jeśli znajdziesz rozwiązanie, napisałem post na oficjalnym forum wordpress bez odpowiedzi :(
Kreker
1
Myślę, że Jan Fabry jest na rozwiązanie. Wolę używać wtyczki Firefox EasyXdebug , która doda XDEBUG_SESSION_STARTparametr zapytania do wszystkich żądań.
Jeff Stieler,

Odpowiedzi:

1

Istnieje proste rozwiązanie z rozszerzeniem Firebox Xdebug Helper autorstwa Briana Gilberta . To ustawia pliki cookie na xdebugsesję, co pozwala na korzystanie xdebugz wtyczek WordPress.

Istnieją również rozszerzenia dla Chrome, Safari i Opera. Linki można znaleźć na stronie internetowej xdebug

Gabrielle Rose
źródło
0

Cześć @Drake:

Głupie pytanie, wiem, ale czy „aktywowałeś” wtyczkę? Właśnie tam się potykam, gdy wtyczki nie są debugowane.

MikeSchinkel
źródło
Tak, wtyczka jest aktywowana. To, co próbuję debugować, to wyzwalacz funkcji w menu utworzonym przez self plugin w obszarze administratora.
Drake
@Drake - Co to jest „wyzwalacz funkcji?” Czy możesz opublikować swój kod jako aktualizację pytania?
MikeSchinkel
0

nie ma sposobu na debugowanie plików wtyczki. Jedynym sposobem, w jaki znalazłem dla wordpress debugowania jest użycie nusphere phped, który niestety nie jest darmowy. Wydaje się, że jedyny może to zrobić, nie wiem dlaczego, ale spędzam bardzo dużo czasu zastanawiając się, jak debugować za pomocą netbeans i zaćmienia ... bez rezultatów!

Kreker
źródło
-3

Cóż, skoro sam WordPress zapewnia WP_DEBUGi wp_die($msg)... dlaczego trzeba debugować za pomocą Xdebug? Chyba że budujesz wtyczkę za pomocą frameworka?

adrian7
źródło
xdebug oferuje wiele narzędzi, których WP_DEBUG i dane wyjściowe nie mają - profilowanie i przechodzenie przez kod na początek ...
boisvert
Zgadzam się, w tym czasie miałem bardzo małą wiedzę na temat Xdebug.
adrian7