Commit 4de32c95 authored by yangguo@chromium.org's avatar yangguo@chromium.org

Implement OS::DumpBacktrace() on FreeBSD.

Review URL: https://chromiumcodereview.appspot.com/11595004
Patch from Ben Noordhuis <ben@c9.io>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 6e12a16a
......@@ -198,6 +198,31 @@ void OS::DebugBreak() {
}
void OS::DumpBacktrace() {
void* trace[100];
int size = backtrace(trace, ARRAY_SIZE(trace));
char** symbols = backtrace_symbols(trace, size);
fprintf(stderr, "\n==== C stack trace ===============================\n\n");
if (size == 0) {
fprintf(stderr, "(empty)\n");
} else if (symbols == NULL) {
fprintf(stderr, "(no symbols)\n");
} else {
for (int i = 1; i < size; ++i) {
fprintf(stderr, "%2d: ", i);
char mangled[201];
if (sscanf(symbols[i], "%*[^(]%*[(]%200[^)+]", mangled) == 1) { // NOLINT
fprintf(stderr, "%s\n", mangled);
} else {
fprintf(stderr, "??\n");
}
}
}
fflush(stderr);
free(symbols);
}
class PosixMemoryMappedFile : public OS::MemoryMappedFile {
public:
PosixMemoryMappedFile(FILE* file, void* memory, int size)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment