Revision: 11954 Author: [email protected] Date: Fri Jun 29 08:11:16 2012 Log: Put even more debug information on stack when aborting.
[email protected] BUG=131642 TEST= Review URL: https://chromiumcodereview.appspot.com/10698048 http://code.google.com/p/v8/source/detail?r=11954 Modified: /branches/bleeding_edge/src/debug.cc /branches/bleeding_edge/src/debug.h ======================================= --- /branches/bleeding_edge/src/debug.cc Fri Jun 22 13:50:03 2012 +++ /branches/bleeding_edge/src/debug.cc Fri Jun 29 08:11:16 2012 @@ -896,17 +896,17 @@ 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 @@ // - 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); } ======================================= --- /branches/bleeding_edge/src/debug.h Fri Jun 22 13:50:03 2012 +++ /branches/bleeding_edge/src/debug.h Fri Jun 29 08:11:16 2012 @@ -236,9 +236,8 @@ Address c_entry_fp, Address last_fp, Address larger_fp, - Address last_in_fp, - Address last_out_fp, int count, + char* stack, int end)); Object* Break(Arguments args); void SetBreakPoint(Handle<JSFunction> function, -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
