일부 스킨개발자 혹은 스킨을 다루는 웹운영진들을 위한 디버그 팁을 알려드립니다.
라이믹스이상에서만 사용할 수 있습니다.
라이믹스에는 디버그 기능이 들어가 있습니다. 예전에 XE도 마찬가지인데 이를 이용한 디버그를 사용할 수 있습니다.
그런데 이 디버그 기능을 사용할 경우 운영에 문제가 발생되는 결과가 초레할 수 있는데 운영진에게만 디버그 기능을 활성화한다면 성능에 영향을 주지 않고 스킨 개발이라던지 이런 부분이 편리합니다.
우선 라이믹스에서 제공하는 디버그 방식은 총 3가지 입니다.
1. 패널디버그 기능.
2. HTML 속 주석 기능.
3. 파일에 디버그 문구를 추가해주는 방식.
스킨개발자 한정으로 추천하는 방법은 1번을 활용하는 것입니다.
다만 패널 디버그 사용시 항상 워닝에러가 표시되는 문제가 있긴합니다. 그래도 우리가 보는 정보가 상단에 먼저 나타나니 무시하셔도 됩니다.
관리자페이지-> 시스템설정-> 디버그 설정 페이지에서
디버그 기능 사용 -> 사용
느린트리거~느린외부요청기록 -> 0.25 초
디버그 정보 표시 방법 -> 화면에 표시(패널)
디버그 정보 표시 내용 -> 응답/요청 정보, 디버그 메세지
디버그 정보 기록 파일 -> 기본값으로 두세요.
디버그 정보 표시 대상 -> 관리자에게만 혹은 아래 IP의 방문자에게만 표시
디버그 허용 아이피 -> 본인의 아이피 한줄만 입력 (내부 공유기 아이피 같이 192.168.0.xx 말고 네이버에 "내 아이피" 검색)
쿼리에 주석 추가 -> 아니요
에러 로그 기록 -> 기록하지 않음
이렇게 설정하시길 권장드립니다.
중요한 설정은 진하게 설정하였습니다.
해당 내용으로 설정하게 되면 해당 디버그 정보 표시 대상의 해당되는 경우 오른쪽 아래에 이미지처럼 보일거예요
해당 버튼을 누르게 되면
이런식의 패널이 뜹니다.
그럼 이제 해당 코드에서 디버그 하는 방법 안내해드릴께요.
{@
$module = getModel('module')->getModuleInfoByModuleSrl($module_srl);
}
이런 코드가 있다고 가정하고 $module의 내용을 알고 싶으면
{@
$module = getModel('module')->getModuleInfoByModuleSrl($module_srl);
debugPrint($module);
}
이렇게 하시면 $module의 내용을 알 수 있습니다.
$module의 내용이 없다고 나오는 경우 매개변수값을 잘못 지정했는지 확인해야하니 $module_srl 을 디버그 해봐야하는데요
{@
$module = getModel('module')->getModuleInfoByModuleSrl($module_srl);
debugPrint($module);
debugPrint($module_srl);
}
이렇게 하시면 되요.
그래서 새로고침한다음 스킨에서 확인해보면 됩니다.
그럼 스킨에서 html 안에 있는 변수들을 어떻게 확인할까요?
<[email protected]($module~~~)-->
이런경우라던가
<block cond="$module~~~"></block>
이 경우
{$module_info->module_srl}
이 경우 모두 포함하는 내용입니다.
그냥 아랫줄에 {@ debugPrint($module~~~) }
이렇게 하시면 됩니다.
아랫줄에 적었는데 아에 실행조차 안보인다면 if 의 의해 실행이 안되니 if안의 내용을 확인하기 위해 해당 if문 그 윗줄에 if문 갈호 안의 내용을 debugPrint찍으시면 됩니다.
이런 방법을 알고 있으시면 스킨제작에 필요한 기능을 쉽게 구현이 가능하실거라 생각합니다.
모듈 개발자는 각자 에디터와 XDEBUG연동하시거나 file 방식의 디버그 방식을 쓰세요.
이 방법은 스킨에서만 사용이 가능합니다. (위에 언급한것과 같이 모듈개발시에도 사용은 할 수 있으나 POST요청의 경우 브라우저에 Display액션이 실행이 되지않고 넘어가기 때문에 debugPrint에 내용을 확인할 수 없습니다. 따라서 스킨 또는 view.php 파일의 액션에서만 확인이 가능하다고 생각하시면 됩니다.)
http://phpdebugbar.com/
phpdebugbar를 내장하면 좋겠네요.
어느 템플릿 파일이 사용되었는지 쿼리 목록 전체 등 이미 갖추어진 스펙에 넣어주기만하면 일목요연하게 정리되어 출력시킬 수 있죠.
물론 현재의 디버그 패널도 이를 약간 흉내내긴 했으나 오류 결과나 debugPrint()를 이용하는 것 외엔 아쉬운 부분이 있습니다.
phpdebugbar 기반으로 좀 더 정리된 데이터로 상태를 나타내주면 좋을 것 같습니다.
request/response 등 기본 정보와 더불어
- 동작한 애드온과 모듈, 위젯과 이들의 설정 값
- 사용된 템플릿 파일
- 로드된 scss/less 파일(import 포함)
- 사이트, 모듈 정보
- 사용된 db 쿼리와 수행 시간
- route
등등 phpdebugbar를 기반으로 손쉽게 데이터를 출력해줄 수 있는 것들입니다. 하지만 코어에서 이를 위한 연동이 필요하겠죠. 서드파티로 만들어보려했으나 데이터 수집이 불가하여 코어 지원 없이는 불가능하겠더군요.
변수의 값을 확인하는 방법 이전에 익숙하지 않은 사람들에겐 어떤 템플릿 파일을 확인해야하는지 조차 알 수 없는 경우가 많은데 이런 부분이 개선되면 좋겠네요.
스켄이 복잡해지면서 파일이 쪼개지고 이를 찾기가 쉽지는 않을 수 있습니다. 목록이라도 제공된다면 좀 더 수월해질 것 같네요.
phpdebugbar는 phph 7.1 이상 환경을 지원하며 이는 라이믹스의 php 지원 정책 범위에도 포함됩니다.
https://github.com/rhymix/rhymix/issues/1562