얼마 전 PHP 확장 개발에 참여하면서 PHP 소스 코드를 디버그해야 할 필요성이 생겼습니다. 그러나 인터넷에 있는 대부분의 튜토리얼은 LINUX 시스템에 대한 튜토리얼이 거의 없으며 프로세스는 다음과 같습니다. 대략적으로 설명했다. 그래서 WINDOWS에서 디버깅 환경을 구축해 보기로 했습니다. 결국 원칙은 같습니다 :).
1. 준비
다음은 도구 버전으로 인해 추가 문제가 발생할 가능성을 줄이기 위해 제 개발 컴퓨터의 구성입니다. A1.Visual Code 소스 코드 편집 커미셔닝 도구
(추천 학습:vscode 입력 튜토리얼 ) 2.visual studio Community2017
(VS는 일반적으로 WIN에서 개발해야 하는 모든 것을 결국 유니버스 패밀리 버킷으로 가져옵니다. ..)빨간색으로 표시된 부분이 설치되어 있어야 합니다
3.PHP7 소스 코드 (github에서 가져오도록 선택할 수도 있습니다)패키지된 소스 코드 버전을 마음대로 선택할 수 있습니다
4.PHP7-SDK
제 개발 머신은 64비트입니다. 저는 PHP7을 컴파일하고 있기 때문에 64비트 deps-7.1-vc14-x64(확장 종속성 라이브러리 패키지)를 선택하고 php-sdk-binary를 만들었습니다. -tools 폴더. , 이 폴더에 php-sdk-binary-tools-xxx.zip의 압축을 풀고 deps-vc14-x64 폴더를 생성한 다음 이 폴더에 deps-7.1-vc14-x64.7z의 압축도 풉니다.
동시에 php-sdk-binary-tools의 bin 경로를 WINDOWS 시스템 변수 PATH에 추가하세요. deps-7.1-vc14-x64는 당분간 이 글에서는 사용되지 않지만, 함께 제공되는 일부 확장 기능을 컴파일하는 라이브러리와 헤더 파일이 포함되어 있으므로 먼저 다운로드할 수도 있습니다. 함께 제공되는 확장을 컴파일하려면 그것을 사용할 수 있습니다 :).2. 소스 코드 컴파일
VS를 설치한 후 시작 메뉴의 Visual Studio 2017 폴더에서 x64 Native Tools Command Prompt for VS 2017을 실행한 후 소스 코드 디렉터리에 PHP7을 입력합니다.
1. buildconf.bat를 실행하여 WIN2에서 구성 파일(configure.js)을 생성합니다. 지원되는 컴파일 매개변수를 보려면 구성.bat --help를 실행할 수 있습니다. -all --enable-cli --enable-debug (간단한 컴파일을 시연하기 위해 매개변수를 직접 추가할 수 있음)4. nmake 명령을 실행하여 컴파일을 시작합니다
로컬 머신의 구성으로 실행 파일 컴파일 후 파일은 소스에 있습니다. 코드 디렉터리의 x64/Debug_TS에서 나중에 디버깅을 시작할 준비를 할 수 있습니다.
3. VSCODE를 사용하여 디버깅
디버깅 방법은 두 가지 유형으로 나눌 수 있는데, 하나는 추가 프로세스 디버깅이고 다른 하나는 실행 시작 디버깅입니다. 먼저 테스트용 PHP 소스코드 파일을 생성합니다. 저는 소스코드 디렉토리의 x64/Debug_TS에 생성했습니다.그런 다음 디버그->구성 열기 메뉴를 선택하고 C++(Windows)를 선택합니다.
마지막으로 아래와 같이 구성 파일을 수정합니다이전에 PHP SAPI의 cli를 컴파일한 후 sapi/cli를 엽니다. / php_cli.c 소스 파일에서 1197번째 줄에 main 함수를 찾아 중단점을 넣습니다.
그런 다음 VS의 DEBUG 제어판으로 이동하여 디버깅을 실행합니다.
그러면 중단점 적중이 표시됩니다.
첨부된 프로세스 디버깅 구성도 비슷합니다. 메뉴 옵션 Debug->Open Configuration을 클릭하고 팝업 선택 목록에서 C/C++(Windows) Attach를 선택합니다.
최종 구성 파일입니다. 다음과 같습니다:
추가 프로세스 디버깅 시연을 용이하게 하기 위해 먼저 PHP -S를 사용하여 내장 서버를 시작합니다(이 PHP는 컴파일하고 생성한 php.exe 파일이어야 합니다). 제가 시작한 위치는 test.php입니다. 이전에 생성한 파일이 있는 디렉토리입니다.
액세스 효과는 다음과 같습니다.
같은 방법으로 디버깅을 시작하고 VSCODE의 디버깅 패널에서 (Windows) Attach를 선택하여 실행합니다.
그런 다음 팝업 프로세스 목록에서 PHP 프로세스를 선택하고 디버깅 상태로 들어갑니다.
test.php에서 array_push 함수를 사용합니다. 이번에는 이 함수의 구현 중단점으로 이동하여 ext/standard/array.c를 열고 2540행을 찾아 중단점을 설정합니다.
그런 다음 브라우저에서 http://127.0.0.1:8080/test.php를 방문하여 중단점을 트리거하세요.
4.마침내
이 글의 디버깅 방법은 확장 개발을 위한 디버깅 방법으로도 사용할 수 있습니다. 물론 Universe IDE Visual Studio에도 동일한 구성 아이디어가 적용됩니다. WINDOWS에서 PHP 소스 코드를 디버깅하기 위해 VSCODE를 구성하는 것은 다른 플랫폼(Mac/Linux...)에서도 사용할 수 있습니다. Visual Studio에서 PHP 소스 코드를 디버깅하는 데 관심이 있다면 이 기사를 아이디어로 삼아 직접 생각해 보는 것은 어떨까요~
위 내용은 VSCODE를 사용하여 WINDOWS에서 PHP7 소스 코드 디버깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!