mirror of
https://github.com/php-win-ext/php-sdk-binary-tools.git
synced 2026-03-25 01:22:06 +01:00
Compare commits
13 Commits
php-sdk-2.
...
php-sdk-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
908f5eeea7 | ||
|
|
a7cc2823bf | ||
|
|
ff6a7245a3 | ||
|
|
9bb1377d59 | ||
|
|
95d712bde7 | ||
|
|
446f4272fe | ||
|
|
f6b6bd96e0 | ||
|
|
94b3d07034 | ||
|
|
6797238516 | ||
|
|
02f2f372b6 | ||
|
|
04832718bb | ||
|
|
b52a0c281a | ||
|
|
bc3606fbaf |
46
README.md
46
README.md
@@ -13,7 +13,7 @@ The PHP SDK 2.0+ is compatible with PHP 7.0 and above. The compatibility with [o
|
||||
# Requirements
|
||||
|
||||
- `Visual C++ 2015` or `Visual C++ 2017` must be installed prior SDK usage (be sure to install both the C++ and the Windows SDK components)
|
||||
- if `Cygwin` is installed, please read notes in the pitfalls section
|
||||
- if `Cygwin`, `MingW` or any other cross solution is installed, please read notes in the pitfalls section
|
||||
- if a 64-bit build is intended, a 64-bit system is required. Cross compilation of 64-bit on 32-bit system is not supported at the moment
|
||||
- The PHP SDK was successfully tested on Windows 7 or later, earlier versions might work but are not recommended
|
||||
|
||||
@@ -138,6 +138,47 @@ After a training case is implemented and put under `pgo/cases`, the work environ
|
||||
|
||||
To skip a training case, add a file named `inactive` into the case folder.
|
||||
|
||||
# Debugging PHP
|
||||
|
||||
This part covers debugging possibilities for the builds produced by the native VS compilers.
|
||||
For the cross compiled builds produced with toolsets other than VC++, please check the
|
||||
documentation for the corresponding toolsets. In any case, general principles on debugging
|
||||
native programs apply.
|
||||
|
||||
Either a debug build of PHP or enabled debug symbols are required to be able to debug PHP.
|
||||
A debug build is usually more suitable for the development process and can be produced by
|
||||
adding `--enable-debug` to the configure options. A release build with debug symbols can
|
||||
be produced by adding `--enable-debug-pack`. These options are mutually exclusive.
|
||||
|
||||
## Debugging with Visual Studio
|
||||
|
||||
- Configure with either `--enable-debug` or `--enable-debug-pack`.
|
||||
- A debug build might bring better experience for dev, but sometimes you want to debug a release build.
|
||||
- `nmake run ARGS=yourscript.php DEBUGGER=1`, that will open a Visual Studio window.
|
||||
- Any additional runtime options for PHP or the script executed go to ARGS, too.
|
||||
- Select `Debug -> New Breakpoint -> Function Breakpoint` and add a function where the debugger should break.
|
||||
- Click `Start`.
|
||||
|
||||
Adding a breakpoint before starting debugging might be not necessary, if a crash is debugged. When such a script runs
|
||||
under the debugger, the debugger will stop at the crashing point. In that case, a breakpoint can be added
|
||||
around the crashed code directly.
|
||||
|
||||
## Debugging test suite with Visual Studio
|
||||
|
||||
The [Microsoft Child Process Debugging Power Tool](https://marketplace.visualstudio.com/items?itemName=vsdbgplat.MicrosoftChildProcessDebuggingPowerTool)
|
||||
plugin for Visual Studio is required. After installing it, following these steps
|
||||
|
||||
- `nmake test TESTS=ext/myext/tests/sometest.phpt DEBUGGER=1`
|
||||
- Select `Debug -> Other Debug Targets -> Child Process Debugging Settings` and enable child process debugging.
|
||||
- If necessary, add a breakpoint and start debugging as described in the previous section.
|
||||
|
||||
## Debugging with WinDbg
|
||||
|
||||
PHP can also be debugged with the tools from the WinDbg package. There is currently no way
|
||||
implemented in the Makefile to start the WinDbg integrated, so it needs to de done manually.
|
||||
Either a debug build or a release build with debug symbols is still required, as described
|
||||
previously.
|
||||
|
||||
# Support
|
||||
|
||||
- Join `#winphp-dev` on Freenode to discuss any ideas or questions
|
||||
@@ -154,5 +195,6 @@ To skip a training case, add a file named `inactive` into the case folder.
|
||||
- The VC++ toolset is still requried, even if another compiler, fe. clang, is intended to be used.
|
||||
- `task.exe` is not a console application, some systems might not propagate exit code except the batch is explicitly run from `cmd /c`, etc.
|
||||
- `7za` should be prefered over `unzip` and `zip` for compatibility reasons.
|
||||
|
||||
- If you experince some strange crashes on MSYS2 tools, try the phpsdk_rebase_msys2 tool. MSYS2 tools might be have unstable
|
||||
on ASLR enabled systems.
|
||||
|
||||
|
||||
40
bin/phpsdk_rebase_msys2.cmd
Normal file
40
bin/phpsdk_rebase_msys2.cmd
Normal file
@@ -0,0 +1,40 @@
|
||||
@echo off
|
||||
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
set PHPSDK_MSYS2_BASE_ADDR=0x70000000
|
||||
set PHPSDK_MSYS2_BASE_DYNAMIC=0
|
||||
|
||||
:getopt
|
||||
if /i "%1" equ "--help" goto help
|
||||
if /i "%1" equ "--addr" (
|
||||
set PHPSDK_MSYS2_BASE_ADDR=%2 & shift
|
||||
for /l %%a in (1,1,100) do if "!PHPSDK_MSYS2_BASE_ADDR:~-1!"==" " set PHPSDK_MSYS2_BASE_ADDR=!PHPSDK_MSYS2_BASE_ADDR:~0,-1!
|
||||
)
|
||||
shift
|
||||
if /i "%1" equ "--dynamic" (
|
||||
set PHPSDK_MSYS2_BASE_DYNAMIC=1
|
||||
shift
|
||||
)
|
||||
if not (%1)==() goto getopt
|
||||
|
||||
IF "1" EQU "%PHPSDK_MSYS2_BASE_DYNAMIC%" (
|
||||
echo Rebasing MSYS2 DLLs to load at a dynamic address
|
||||
editbin /NOLOGO /DYNAMICBASE %PHP_SDK_ROOT_PATH%\msys2\usr\bin\*.dll
|
||||
) else (
|
||||
echo Rebasing MSYS2 DLLs to load at %PHPSDK_MSYS2_BASE_ADDR%
|
||||
editbin /NOLOGO /REBASE:BASE=%PHPSDK_MSYS2_BASE_ADDR%,DOWN %PHP_SDK_ROOT_PATH%\msys2\usr\bin\*.dll
|
||||
)
|
||||
|
||||
set PHPSDK_MSYS2_BASE_ADDR=
|
||||
set PHPSDK_MSYS2_BASE_DYNAMIC=
|
||||
|
||||
GOTO EXIT
|
||||
|
||||
:help
|
||||
echo phpsdk_rebase_msys2 ^<address^>
|
||||
echo Rebase MSYS2 DLLs to the given address. If ommited, default is 0x70000000.
|
||||
|
||||
:EXIT
|
||||
exit /b %errorlevel%
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
msys2/usr/bin/msys-icuuc62.dll
Normal file
BIN
msys2/usr/bin/msys-icuuc62.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
msys2/usr/bin/msys-idn-12.dll
Normal file
BIN
msys2/usr/bin/msys-idn-12.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
msys2/usr/bin/msys-lz4-1.dll
Normal file
BIN
msys2/usr/bin/msys-lz4-1.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user