오류 발생시 스택 추적을 생성하는 방법


20

sysadmin이 Drupal 사이트를 디버깅하려고합니다. 내 서버 로그에서 Drupal이 PHP가 결국 메모리를 다 사용하고 Apache가 500 오류를 반환 할 때까지 Solr 인스턴스에 동일한 요청을 계속 반복하는 것을 볼 수 있습니다.

디스크 어딘가에 스택 추적을 기록하도록 Drupal을 구성하려면 어떻게해야합니까?

답변:


15

Devel 모듈을 사용 하고 구성 페이지 (admin / config / development / devel)에서 제공하는 "Krumo Backtrace"옵션 중 하나를 선택할 수 있습니다 .

크루 모 역 추적

admin / config / development / logging을 방문하여 "오류 및 경고"또는 "모든 메시지"를 선택하십시오. Syslog 모듈 또는 다른 로깅 모듈이 사용 가능한 경우이를 사용 불가능하게하고 Dblog 모듈을 사용 가능하게해야합니다.

역 추적 구성


6
이 메소드가 특정 예외에 대해 krumo 백 트레이스를 제공하지 못하는 것을 발견했습니다 (예 : EntityMetadataWrapper객체의 존재하지 않는 속성에 액세스) .
artfulrobot

3
EntityMetadataWrapper 오류의 경우보고 된 오류의 행으로 이동하여 해당 행 ddebug_backtrace();바로 앞에 삽입하십시오 . 물론 제거하는 것을 잊지 마십시오!
Duncanmoo

이 메시지가 어딘가에 기록되어 있거나 로그에 기록 될 수 있습니까? 그렇지 않으면 생산에 쓸모가 없습니다.
Hjulle

1

drupal 시스템의 코어 모듈 아래에있는 모듈 섹션에서 로그는 디스크에 로그를 저장하는 syslog 모듈입니다. 그것이 당신이 찾고있는 것을 도울 수 있기를 바랍니다.


1
불행히도 치명적인 오류 (예 : 메모리 부족 오류)에는 작동하지 않습니다.
stefgosselin

0

Drupal 7 및 8의 경우 모듈 검사 는 역 추적에 적합합니다.

파일 또는 파일을 Drupal 데이터베이스의 로그에 표시하지 않고 추가 할 수 있습니다. 이는 Krumo 역 추적 ddebug_backtrace()및 기타 직접 화면 출력을 생성하는 솔루션이 실패하는 경우에 유용합니다 . 렌더링 출력이 시작되기 전에 오류 및 예외가 발생하는 경우입니다.

inspect의 관리자 백엔드 구성 영역에는 코드 사용법에 대한 빠른 참조가 포함되어 있습니다.


2
나는 inspect문서 에서 찔 렀지 만 오류가있을 때 스택 추적을 생성하는 방법을 보지 못했습니다. 그것이 할 수있는 일입니까?
Ken Williams

0

추적 모듈 내 상황에 훨씬 더 일했다.

Drupal 후크 호출, 데이터베이스 쿼리 및 PHP 오류에 대한 광범위한 추적 기능을 추가하는 sysadmin 및 개발자 도구입니다.

이 모듈 버전 1.0에서 제공하는 일부 기능 :

  • 추적 메시지를 파일 또는 syslog (UNIX 플랫폼)로 출력합니다.
  • 선택적 필터 및 스택 추적으로 Drupal 후크 호출을 추적합니다.
  • 선택적 전체 스택 추적으로 PHP 경고 및 오류를 추적합니다.
  • 쿼리 유형별 필터링 옵션을 사용하여 SQL 데이터베이스 쿼리를 추적합니다.
  • 추적 출력에는 마이크로 초 수준의 타이밍 정보가 포함됩니다.
  • 스택 추적에는 함수에 전달 된 인수가 PHP 구문으로 포함됩니다.
  • 선택적 디버그 출력에는 PHP 슈퍼 글로벌 및 HTTP 헤더가 포함됩니다.
  • 다른 모듈이 추적 출력 대상을 확장 할 수 있도록하는 후크를 정의합니다.

1
이제이 모듈은 더 이상 개발되지 않으며 사용 가능한 D7 버전이 없습니다.… :(
tanius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.