2010-04-13 2 views
1

의 변수에 나를 debug_backtrace() 이메일로 보내려고했지만 배열을 출력합니다. var_export가 함께 작동 할 수 있도록 변수에 할당해야합니다. 어떻게 할 수 있습니까?할당 debug_backtrace() PHP

답변

2

는 다음 $의 MSG 보내기 :

$msg = print_r(debug_backtrace() , true) ; 

테스트하지,하지만 하나의 방법입니다.

+0

에 넣어 인 print_r()를 사용할 수 있습니다. – siliconrockstar

+1

@ siliconrockstar 귀하의 생각은 맞습니다. 감사. – zaf

2

debug_backtrace은 배열을 반환하지만 인쇄하지는 않습니다. 보고서 이메일을 처리하는 코드에 문제가있을 수 있습니다. 그 코드를 여기에 붙여도 될까요?

5

"배열을 인쇄합니다"라는 기능이 있습니다 (debug_print_backtrace). 혹시 그 두 개를 섞어 보지 않으셨습니까?
var_export() 및 print_r()은 기본적으로 결과를 인쇄합니다. 당신은 당신이 (당신이 변수에 할당 할 수 있습니다) 그들이 어떤 배열처럼 처리 할 수 ​​있도록

$result = var_export(debug_backtrace(), true); 
1

디버그 역 추적은 배열을 반환 결과를 반환 할 경우 두 번째 매개 변수로 true을 통과해야합니다. 예를 들면 다음과 같습니다.

$trace = debug_backtrace(); 
foreach ($trace as $i=>$t) { 
    $log .= $i .'=>'.$t['file'].' '.$t['line']."\n"; 
} 

로그 라인을 전자 메일로 보낼 수 있습니다.

0

나는 이것이 오래되었음을 알고 있지만 같은 문제가 있음을 깨달았습니다. 100 %를 확인할 수는 없지만 메모리 부족 오류와 관련이있을 수 있습니다.

제 시나리오 - 제 3 자 제출 실패시 디버깅 정보가 포함 된 이메일 (즉, 코드가 실패한 곳)을 보냅니다. 나도 변수에 $trace = debug_backtrace()을 저장하고 나중에 var_export($trace, true)을 사용하여 전자 메일에 포함했습니다. CodeIgniter 프레임 워크와 독립형 페이지 (레거시 코드)에서이 도우미 함수를 사용하고 있습니다.

백 트레이스 + 내보내기 코드는 독립 실행 형 페이지에서 제대로 작동하지만 CodeIgniter에서 화면에 결과를 인쇄합니다. 실제로는 선의 중간에 자르기 전에 처음 2 개의 흔적 만 인쇄했습니다.

전체 백 트레이스를 에코하는 대신 모든 파일이 잘 작동하는 줄, 파일, fn 및 args 만 인쇄했습니다.

내 생각 엔 백스트레이 (CI 개체를 통해 행진)에서 너무 많은 재귀가 메모리를 껐다가 화면에 결과를 토하도록하는 것 같습니다.

1

당신은 변수에 출력을 반환하고 난 당신이 여분 뒤에 괄호를 가지고 생각 파일

$backtrace = debug_backtrace(true); 
$dump = print_r($backtrace, true); 
$f=fopen('export.txt','a'); 
fwrite($f, date("Y-m-d H:i:s")." ".$dump."\n"); 
fclose($f);   
관련 문제