나는 내 코드는 다음을 수행 할 :어떻게 디버깅 목적으로 스택 추적 높이를 추적 할 수 있습니까?
def debug (message)
puts message.rjust(message.length + (stack_trace-1 * 2)) # -1 for the call to debug
end
def a
debug "in a"
b
debug "end a"
end
def b
debug "in b"
c
debug "end b"
end
def c
debug "in c"
meaningful_work
debug "end c"
end
출력 :
in a
in b
in c
end c
end b
end a
나는이 같은 PHP이 전에했던 :
function echon($string){
$nest_level = count(debug_backtrace()) - 1; // minus one to ignore the call to *this* function
echo str_repeat(" ", $nest_level) . $string . "\n";
}
을 지금까지 나의 google-fu는 debug_backtrace
에 해당하는 루비가 없다고 말할 수 있습니다. 역 추적 (backtrace)을 통과하기 위해 노력하고있는 코드 기반의 수많은 메소드의 호출을 수정하고 싶지는 않습니다. 이것은 불필요하게 번거롭고 되돌리기 어렵습니다.
여기서 추적 할 때 사용할 수있는 글로벌 미디어가 있습니까?
놀라운 대답, 내가 두 가지를 받아 들일 수 있다면. 제가 제안 할 수 있을까요? ''temp_user_id : # {user_id} ''와 같은 것을 전달할 수 있도록 기본 디버그 문자열을 덮어 쓰는 문자열 인 디버그에 선택적 매개 변수를 추가하고 멋진 형식을 유지하십시오. –
Deven, 내가 제안한 변경을했습니다. 좋은 사람 이었어. 답장이 지연되어 죄송합니다. –