xdebug 문의

미해결질문
김수린 프로필
김수린 6달 전

현재 php.ini 에 xdebug 설정은 아래와 같이 해놓은 상태 입니다.

; xdebug setting
[xdebug]
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
zend_extension=/usr/lib/php/20170718/xdebug.so
김수린 프로필
김수린 6달 전

phpinfo()로 찍어도 xdebug가 잘 셋팅 되었다고 표시되고 있습니다.

안형우 프로필
안형우 6달 전

안녕하세요 :) 좋은 질문 감사합니다. 여기까지 설정하시느라 수고하셨어요!

질문 주신 내용을 이렇게 이해했는데 맞는지 확인해 주시고요: "에러 메시지가 그냥 문자열로 나오는데, 강의에 나오는 것처럼 html로 스타일이 매겨져서 나오게 하려면 어떻게 해야 하나요?"

일단, 제가 이해한 질문에 대한 답을 해 보겠습니다. 참고하실 링크는 https://xdebug.org/docs/all_settings#overload_var_dump 입니다. xdebug의 모든 설정을 설명해 둔 문서인데요, 참고하실 내용은 overload_var_dump 항목입니다. 아래는 제가 한 번역입니다.

---

integer xdebug.overload_var_dump = 2

기본적으로 Xdebug는 html_errors php.ini 설정이 true로 돼 있으면, 변수를 표시하는 var_dump()를 Xdebug의 개선된 버전으로 덮어쓴다. 그렇게 하고 싶지 않다면, xdebug.overload_var_dump 설정을 0으로 하면 된다. 하지만 우선 htmp_errors를 끄는 편이 더 낫지 않은지 검토해 보라.

Xdebug 2.3에서 새로 추가: 이 설정에 값을 2로 사용할 수 있다. var_dump() 출력을 좋게 바꾸는 데 더해서 파일명과 줄번호를 더해 줄 것이다. 이 때 xdebug.file_link_format 설정을 사용한다.

Xdebug 2.4 이전: 기본값은 1이다.

---

위 내용을 토대로 생각해 보면 php.ini에서 php의 기본 설정인 html_errors가 false로 설정돼 있지 않은지 확인해 보시면 좋을 것 같습니다.

만약 그렇게 해서 잘 되지 않으면 다시 질문해 주시면 감사하겠습니다.

그럼, 좋은 하루 되세요~! :)

김수린 프로필
김수린 6달 전

안녕하세요! 강사님과 비슷한 화면까지는 성공하였습니다. 도움주셔서 감사합니다 !
현재 저의 화면은 이렇습니다 !
추가로, 강사님과 같이 Call Stack 화면을 띄우고 싶어서

php.ini 파일의

display_erros = On으로 설정을 바꾸고,

https://xdebug.org/docs/stack_trace

위의 문서를 참고하여, 

xdebug.collect_params=3

셋팅값까지 추가하였지만, 강사님과 같은 Call Stack이 표시되지 않는데, 

혹시 제가 잘 못된 설정을 한것일까요?

또한, 현재 제 화면에는 강사님 화면에는 표시되지 않는

"There has been a critical error on your website.

Learn more about debugging in WordPress." 라는 구문이 뜨는데,

혹시 이 메세지가 뜨는것과 Call Stack이 뜨지 않는 부분이 관련이 있는것일까요?

감사합니다.!

안형우 프로필
안형우 6달 전

안녕하세요 :) 질문을 상세히 해 주셔서 저도 이리저리 찾아 보고 새로이 알게 됐습니다.

우선, 세팅은 잘 된 것 같아요. 재연해 보니 저도 문법 파싱 에러에선 Stack Trace가 표시되진 않더라고요. 첨부한 동영상을 참고해 보세요. 문법 파싱 에러에선 스택 트레이스가 나오지 않지만, asdf() 처럼 없는 함수를 실행하면 스택 트레이스가 나옵니다.

그리고 동영상을 찍으면서 또 하나 확인한 것은, "There has been a critical error on your website" 메시지가 언제 나오는지입니다. 해당 에러 메시지는 워드프레스 5.3부터 나온 것이라고 합니다. 서버 에러 때문에 화면을 출력할 수 없을 뿌려 주는 에러 메시지네요.

그래서 동영상을 보시면 알 수 있을 텐데요, functions.php 에 에러가 있어서, 화면을 뿌리기 전에(좀더 엄밀히 말하면 http 응답에서 body를 출력하기 전에) 에러가 발생하면 "There has been a critical error on your website" 에러 메시지가 등장합니다. content.php에 에러가 있어서 화면을 뿌리던 중간에 에러가 발생하면 해당 메시지가 나오지 않습니다.

그리고 다음, xdebug.collect_params=3 에 관한 이야기를 드릴 게요. 이것저것 해 보신 것이고, 아마도 아실 테지만, 그래도 혹시나 해서 말씀을 드립니다. xdebug.collect_params=3 옵션은 Stack Trace를 출력할지 여부에 관한 옵션은 아니고, 얼마나 자세히 출력할 것인지에 관한 옵션이라는 걸 아마 아실 겁니다.

질문에 써 주신대로 display_erros = On 옵션을 줬으면 아마도 스택 트레이스가 출력되지 않을까 싶습니다.

우선 제가 알 수 있는대로 답을 드렸는데요, 그래도 안 되면 주저 말고 질문해 주세요 :)

지금까지 해 주신 것처럼 상황을 상세히 말씀해 주시면 큰 도움이 될 것 같고요.

감사합니다.

김수린 프로필
김수린 6달 전

안녕하세요. 강사님 !
친절하고 자세하게 설명해주셔서 감사합니다 !

덕분에, 저도 강사님과 같은 에러메시지를 얻을 수 있었습니다 !
감사합니다!
나머지 강의도 열심히 배우겠습니다!

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스