As mentioned in the other thread, I think the StreamString thing is kind of irrelevant. The goal here is to get the backtrace to the screen. I would argue the reverse, that we should only be reinventing facilities in LLDB when there's a good reason to do so. In this case, I don't think being able to use a StreamString is a compelling enough reason. On the other hand, having a consistent backtrace format which supports all platforms is definitely a compelling reason to use the LLVM facility. So I do think it makes sense here.
On Wed, Mar 4, 2015 at 5:12 PM Enrico Granata <[email protected]> wrote: > On Mar 4, 2015, at 4:39 PM, Zachary Turner <[email protected]> wrote: > > BTW, I have just uploaded http://reviews.llvm.org/D8068 to LLVM which > implements backtracing of self on Windows (previously only backtracing of > other threads was supported). So once that goes through, if we switch this > code to using llvm::sys::PrintBacktrace(), > > > I don’t think we should make this change. > Host::Backtrace prints to an lldb_private::Stream which is our preferred > API for accumulating output - the LLVM version of this seems to print to a > FILE* which is much less general > > I understand using LLVM facilities where it makes sense, but we should not > be doing so blindly when the net effect is a loss of functionality for us > > If you can implement Host::Backtrace in general on all platforms via LLVM, > feel free to do so - but we should still go through lldb's Host::Backtrace > for this, and Host::Backtrace should still use our Stream*s* > > we should have a standard backtrace format across all platforms that LLVM > supports. > > I like this feature now that I understand the use case, thanks for > introducing it. > > > We had a power outage here in Cupertino, which delayed my reply > Glad to hear we all agree on this :-) > > On Wed, Mar 4, 2015 at 3:31 PM Siva Chandra <[email protected]> > wrote: > >> On Wed, Mar 4, 2015 at 2:59 PM, Enrico Granata <[email protected]> >> wrote: >> > +#ifdef LLDB_CONFIGURATION_DEBUG >> > +#define lldbassert(x) assert(x) >> > +#else >> > +#define lldbassert(x) lldb_private::lldb_assert(x, #x, __FUNCTION__, >> __FILE__, __LINE__) >> > +#endif >> >> Why should we have this ifdef? As in, why shouldn't we use lldb_assert >> unconditionally, always (giving us the benefit of backtraces always)? >> _______________________________________________ >> lldb-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits >> > Thanks, > *- Enrico* > 📩 egranata@.com ☎️ 27683 > > > > >
_______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
