Laravel 같은 경우에는 dd()
가 있기 때문에 굳이 XDebug를 사용하지 않아도 큰 어려움은 없지만 XE 같은 경우에는 환경설정 파일을 변경하고 debugPrint()
를 찍어가며 확인해야 하기 때문에 디버깅이 쉽지 않다. 그런 경우에는 XDebug를 활용하면 편리하다.
XDebug 설치
pecl install xdebug
설치확인
$php -v
PHP 7.1.18 (cli) (built: May 25 2018 19:18:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
with Zend OPcache v7.1.18, Copyright (c) 1999-2018, by Zend Technologies
ext-xdebug.ini 위치 찾기
나 같은 경우에는 별도의 ext-xdebug.ini
파일은 없고 php.ini
에 xdebug 설정이 포함됨.
php --ini
모듈 적용 확인 및 활성화
설정 파일에서 아래와 같이 활성화
[xdebug]
zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart = 1
Visual Studio Code에서 PHP Debug 확장 프로그램 설치
- 확장 프로그램 PHP Debug 설치
환경변수 설정
.bashrc나 .zshrc에 아래의 값을 추가
export XDEBUG_CONFIG="idekey=VSCODE"
값을 수정한 뒤에는 적용
. ~/.zshrc
또는
. ~/.bashrc
디버깅 테스트
- 디버그(⇧⌘D) 보기로 한 후 시작버튼을 눌러 디버깅을 시작한다.
- 환경 선택 화면이 나오면 PHP 선택
- PHP를 선택하면
launch.json
파일이 나오는데 기본 설정파일이고 특별히 변경할 필요는 없다. - 위의 설정파일을 닫고 Laravel의
ExampleTest.php
파일을 열어본다. testBasicTest()
를 아래와 같이 수정
public function testBasicTest()
{
$foo = 'bar';
$this->assertTrue(true);
}
$foo
라인 좌측을 클릭해서 브레이크포인트를 지정한다.- 터미널에서
phpunit
을 실행한다. - 좌측의 디버깅 뷰를 보면 처음에는
uninitialized
상태였던$foo
가 단계별 실행 후"bar"
로 바뀌어 있는 것을 확인