xdebug를 사용하여 동일한 코드베이스를 공유하는 두 응용 프로그램의 중단 점

StackOverflow https://stackoverflow.com//questions/24022209

문제

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을 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top