2013-06-14 25 views
6

Tôi đang sử dụng PHPStorm mà được cấu hình để sử dụng xDebug (Tôi có thể gỡ lỗi thông qua trình duyệt web tốt)Đang cố gắng để kiểm tra đơn vị debug phpunit trên cli sử dụng Xdebug không

tôi chạy trình gỡ lỗi trong PHPStorm trong đó có các idekey của 11.854 và tôi đang cố gắng để gỡ lỗi một thử nghiệm đơn vị, và tôi đã thiết lập các breakpoint đúng

vì vậy tôi thực hiện lệnh này thông qua các cli:

phpunit -d xdebug.profiler_enable=on -d xdebug.idekey=11854 --filter testFunction s_function/sFunctionTest.php 

Tuy nhiên, nó sẽ không gỡ lỗi tại điểm ngắt tương ứng ...

khi tôi đã cố gắng thực hiện này trong kịch bản thử nghiệm:

error_log(ini_get('xdebug.profiler_enable')); 
error_log(ini_get('xdebug.idekey')); 

nó sẽ tiết lộ xdebug.profiler_enable đó là 0 và xdebug.idekey chỉ là tên tôi.

Tôi đã làm gì sai và làm thế nào tôi có thể nhận được Xdebug để làm việc trên phpunit qua cli

+0

Nếu bạn có thể gỡ lỗi các tập lệnh thông thường ở chế độ ** CLI ** trong PhpStorm ..sau đó thực hiện tương tự nhưng với PHPUnit: tạo cấu hình Run/Debug của kiểu PHPUnit, điền vào tất cả các trường bắt buộc để bạn có thể chạy nó trong PHPUnit .. và thay vì "Run" sử dụng nút "Debug". – LazyOne

Trả lời

7

Bạn chỉ việc thiết lập luận để phpunit, không để PHP. Sau đây nên làm những gì bạn muốn:

php -d xdebug.profiler_enable=on -d xdebug.idekey=11854 `which phpunit` --filter testFunction s_function/sFunctionTest.php 
+0

Bạn có thể hiển thị ảnh chụp màn hình về đầu ra mong đợi sau khi chạy lệnh này không? – Jhn

+0

bạn nên giải thích những gì và tại sao các thông số bạn đang sử dụng? –

2

các xdebug docs đưa ra một giải pháp mà trông đơn giản hơn ...

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

Khi biến được thiết lập, bạn có thể chạy các script của bạn từ dòng lệnh như bình thường (cho phiên SSH) và PHP sẽ sử dụng cấu hình này.

Ngoài ra cần chú ý:

Bạn cũng có thể cấu hình các xdebug.remote_host, xdebug.remote_port, xdebug.remote_mode và xdebug.remote_handler trong cùng một biến môi trường này miễn là bạn tách các giá trị của một không gian

0

Trong Ubuntu để gỡ lỗi CLI tôi thấy cách duy nhất để làm cho nó làm việc là để thêm dòng sau vào tập tin ~/.bashrc của bạn

export PHP_IDE_CONFIG='serverName=localhost' 
export XDEBUG_CONFIG='idekey=PHPSTORM' 

Thay thế idekey = ?? đến 11854 trong ví dụ của bạn. Hãy chắc chắn để bắt đầu một phiên giao diện điều khiển mới để các vars được sử dụng.

0

Tôi đang thử ở đây một thiết lập rất khác. Tôi chạy các ứng dụng của tôi bên trong dockers và tôi có một container rất giống với container chạy trên sản xuất. Vì vậy, để chạy php với xdebug trong môi trường phát triển của tôi, tôi đã phải thiết lập một bí danh với các tham số xdebug và biến PHPStorm.

$ alias php=`which php`' \ 
    -d xdebug.idekey=xdbg \ 
    -d xdebug.remote_enable=1 \ 
    -d xdebug.remote_connect_back=1 \ 
    -d xdebug.remote_autostart=1 \ 
    -d xdebug.remote_port=9000 \ 
    -d xdebug.remote_host=172.17.0.1 \ 
    -d xdebug.remote_handler=dbgp' 

$ export PHP_IDE_CONFIG="serverName=localapp.docker" 

Sau thủ thuật không đẹp này, tôi có thể đặt điểm ngắt trên PHPStorm và chạy phpunit từ dòng lệnh.

$ php ../../bin/phpunit --verbose 

Tất cả các lệnh trên được chạy bên trong vùng chứa. localapp.docker là địa chỉ của vùng chứa của tôi và được mã hóa cứng /etc/hosts của máy chủ.

Các vấn đề liên quan