Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Unified Diff: src/debug.cc

Issue 10698048: Put even more debug information on stack when aborting. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « src/debug.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698