if (!memberName || !*memberName) {
// Anonymous structure
- Struct *memberStruct = dynamic_cast<Struct *>(memberValue);
+ Struct *memberStruct = memberValue->toStruct();
assert(memberStruct);
if (memberStruct) {
sep = visitMembers(memberStruct, sep);
}
void visit(StackFrame *frame) {
- String* tmp;
- tmp = frame->module;
- if (tmp != NULL) {
- os << tmp->toString() << " ";
- }
- tmp = frame->function;
- if (tmp != NULL) {
- os << "at " << tmp->toString() << "() ";
- }
- tmp = frame->filename;
- if (tmp != NULL) {
- os << "at " << tmp->toString();
- tmp = frame->linenumber;
- if (tmp != NULL) {
- os << ":" << tmp->toString() << " ";
- }
- }
- else {
- tmp = frame->offset;
- if (tmp != NULL) {
- os << "[" << tmp->toString() << "]";
- }
- }
+ frame->dump(os);
}
- void visit(Backtrace* backtrace) {
- for (int i = 0; i < backtrace->frames.size(); i ++) {
- visit(backtrace->frames[i]);
+ void visit(Backtrace & backtrace) {
+ for (int i = 0; i < backtrace.size(); i ++) {
+ visit(backtrace[i]);
os << "\n";
}
}
if (call->backtrace != NULL) {
os << bold << red << "Backtrace:\n" << normal;
- visit(call->backtrace);
+ visit(*call->backtrace);
}
if (callFlags & CALL_FLAG_END_FRAME) {
os << "\n";