xdebug를 사용하여 동일한 코드베이스를 공유하는 두 응용 프로그램의 중단 점
-
21-12-2019 - |
문제
Xdebug ubuntu를 실행하는 in 인스턴스에서 xdebug 예상대로 작동하며 응용 프로그램에서 중단 점을 설정할 수 있습니다.
응용 프로그램이 내부 API에 요청하는 시나리오가 있습니다. 내부 API는 동일한 서버 및 동일한 코드베이스에 있습니다.
트리 그림
codebase/
app/
root
api/
root
.
응용 프로그램은 https://local.myapplication.com 및 API가 로컬로 액세스 할 수 있습니다 http://local.api.myapplication.com ).
이제 API의 일부 코드에서 중단 점을 설정 한 다음 https://local.myapplication.com/some/Action/that/triggers/the/api/code 중단 점은 첫 번째 응용 프로그램에 대한 xdebug 세션을 초기화하지 않으면 나중에 트리거됩니다.XDEBUG_SESSION_START
쿼리 매개 변수를 설정하지 않습니다. 설정된 경우 나의 중단 점이 무시됩니다.
이에 대한 일정 단점이 있습니다. 응용 프로그램과 API에 중단 점이 있으면 잠시 동안 둘 다 트리거 할 수 없습니다. 응용 프로그램 중단 점 또는 API 중단 점을 트리거 할 수 있습니다.
저는 숭고한 텍스트 3 플러그인 https://github.com/martomo/sublimetextxdebug . php.ini
의 xDebug 설정은 다음과 같습니다.
zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=192.168.3.1
xdebug.remote_port=9000
xdebug.remote_log="/tmp/php5-xdebug.log"
.
이이 고정 가능합니까? 답변 / 의견을 높이 평가합니다!
해결책
두 가지 선택.첫 번째 (쉽게)가 두 번째 확실하게 작동하지 않는 경우
1 - 각 HTTP 요청에 대해 새로운 XDEBUG 세션을 시작합니다.
php.ini에서 xdebug 설정에 다음을 추가하십시오.
xdebug.remote_autostart = 1
.
2 - 2 개의 XDEBUG 세션을 동시에 실행하십시오.
XDEBUG를 듣는 IDE / 텍스트 편집기의 두 가지 개별 인스턴스가 있어야합니다.XDebug 서비스가 다른 포트에서 수신 대기하는 동안 두 인스턴스를 두 인스턴스를 모두 설정할 수 있습니다.
예 :
- "응용 프로그램"-> 포트 9000
- "내부 API"-> 포트 9001
"내부 API"를 포트 9001에서 실행하기 위해 "내부 API"스크립트의 시작 부분에서 다음을 수행 할 수 있습니다.
ini_set('xdebug.remote_port', '9001');
. 다른 팁
conditional breakpoints
를 사용하십시오.PHP 코드에 의존하게 할 수 있습니다.예를 들어,각 엔트리 포인트에 상수를 설정하고 확인하십시오.또는 요청 URL을 확인하십시오.