13.6.2 PHP7에서 소스 맵(Source Maps in PHP7)
13.6.2 PHP7에서 소스 맵(Source Maps in PHP7)
호출 스택과 예외 스택에서의 Haxe 소스 코드 위치.
3.4.1부터 Haxe는 -D php7과 -D source_map 플래그로 컴파일할 때 PHP 타깃용 소스 맵을 생성할 수 있습니다.
생성된 소스 맵은 JStack 라이브러리로 활용해 haxe.CallStack.callStack(), haxe.CallStack.exceptionStack() 및 잡히지 않은 예외를 자동 변환하여, 생성된 PHP 파일 대신 Haxe 소스를 가리키게 할 수 있습니다.
class Main {
static function main() {
terribleError();
}
static function terribleError() {
throw "Terrible error";
}
}
플래그로 빌드하기:
--main Main
-D php7
--php build
--debug
이 빌드를 실행하면 잡히지 않은 예외가 추적됩니다:
$ php build/index.php
PHP Fatal error: Uncaught php/_Boot/HxException: Terrible error in build/lib/Main.php:25
Stack trace:
#0 build/lib/Main.php(16): Main::terribleError()
#1 build/index.php(13): Main::main()
#2 {main}
thrown in build/lib/Main.php on line 25
haxelib install jstack으로 JStack을 설치하세요. JStack은 -D source_map 플래그를 자동으로 추가하므로 수동으로 추가할 필요가 없습니다.
JStack이 설치된 경우 다음과 같이 컴파일 과정에 추가할 수 있습니다:
--main Main
-D php7
--php build
--debug
-L jstack
출력은 예외에 대해 더 유용한 스택 추적을 갖게 됩니다:
$ php build/index.php
Terrible error
Called from Main.terribleError (src/Main.hx line 7)
Called from Main.main (src/Main.hx line 3)
Called from build/index.php line 13