| Index: src/debug.cc
|
| diff --git a/src/debug.cc b/src/debug.cc
|
| index ffe5b0db1fae5c55d3f40d6fad0b97b45024e68b..1f5164f6ac3dc496b205494695bac3bb8b4fd330 100644
|
| --- a/src/debug.cc
|
| +++ b/src/debug.cc
|
| @@ -896,17 +896,17 @@ void Debug::PutValuesOnStackAndDie(int start,
|
| Address c_entry_fp,
|
| Address last_fp,
|
| Address larger_fp,
|
| - Address last_in_fp,
|
| - Address last_out_fp,
|
| int count,
|
| + char* stack,
|
| int end) {
|
| OS::PrintError("start: %d\n", start);
|
| OS::PrintError("c_entry_fp: %p\n", static_cast<void*>(c_entry_fp));
|
| OS::PrintError("last_fp: %p\n", static_cast<void*>(last_fp));
|
| OS::PrintError("larger_fp: %p\n", static_cast<void*>(larger_fp));
|
| - OS::PrintError("last_in_fp: %p\n", static_cast<void*>(last_in_fp));
|
| - OS::PrintError("last_out_fp: %p\n", static_cast<void*>(last_out_fp));
|
| OS::PrintError("count: %d\n", count);
|
| + if (stack != NULL) {
|
| + OS::PrintError("stack: %s\n", stack);
|
| + }
|
| OS::PrintError("end: %d\n", end);
|
| OS::Abort();
|
| }
|
| @@ -1014,25 +1014,27 @@ Object* Debug::Break(Arguments args) {
|
| // - FP of the frame at which we plan to stop stepping out (last FP).
|
| // - current FP that's larger than last FP.
|
| // - Counter for the number of steps to step out.
|
| + // - stack trace string.
|
| if (it.done()) {
|
| // We crawled the entire stack, never reaching last_fp_.
|
| PutValuesOnStackAndDie(0xBEEEEEEE,
|
| frame->fp(),
|
| thread_local_.last_fp_,
|
| - NULL,
|
| - thread_local_.step_into_fp_,
|
| - thread_local_.step_out_fp_,
|
| + reinterpret_cast<Address>(0xDEADDEAD),
|
| count,
|
| - 0xFEEEEEEE);
|
| + NULL,
|
| + 0xCEEEEEEE);
|
| } else if (it.frame()->fp() != thread_local_.last_fp_) {
|
| // We crawled over last_fp_, without getting a match.
|
| - PutValuesOnStackAndDie(0xBEEEEEEE,
|
| + Handle<String> stack = isolate_->StackTraceString();
|
| + char buffer[2048];
|
| + String::WriteToFlat(*stack, buffer, 0, 2047);
|
| + PutValuesOnStackAndDie(0xDEEEEEEE,
|
| frame->fp(),
|
| thread_local_.last_fp_,
|
| it.frame()->fp(),
|
| - thread_local_.step_into_fp_,
|
| - thread_local_.step_out_fp_,
|
| count,
|
| + buffer,
|
| 0xFEEEEEEE);
|
| }
|
|
|
|
|