<div dir="ltr"><div><div><div><div>This works if all you want to do is print the stack trace.<br><br></div>However, if you wish to examine or modify the trace in ANY WAY, then LLVM's printStackTrace() is no longer sufficient.<br><br></div>In my case, my language mangles names in its own way, because it is not C++. I need to demangle these names, and therefore need to examine/modify the output.<br><br></div>Right now I am forking, launching LLDB in the parent, and attaching to my compiler in the child, and when LLDB gets notified of a signal, I print the stack trace. This is essentially what the OP wanted. This works, but there is a pause at startup while LLDB does??? (I think it's loading symbols). I'd like to get rid of that pause, but have found no workable way of doing so.<br><br></div>One idea I had was to have LLDB launch only after my signal handler has caught a signal. Alas, in this mode, LLDB could not backtrace past the signal handler - all stack frames from my compiled code were dropped, so that it looked like the code that generated the signal was in fact my runtime.<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 28, 2015 at 1:13 AM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Instead of linking lldb.so, which is basically an entire debugger, maybe you could just link llvm? I don't remember which library has the stack trace function in llvm, but the function I believe is called llvm::sys::printStackTrace(). This will give you a much smaller overhead than bringing in all of lldb unnecessarily.</div><br><div class="gmail_quote"><span class=""><div dir="ltr">On Mon, Jul 27, 2015 at 10:12 PM Schlottke-Lakemper, Michael <<a href="mailto:m.schlottke-lakemper@aia.rwth-aachen.de" target="_blank">m.schlottke-lakemper@aia.rwth-aachen.de</a>> wrote:<br></div></span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Hi folks, <br>
<br>
We are looking for a way to use lldb.so to print out a stack trace programmatically. In our scientific simulation tool (written in C++) , we use a custom terminate function where we are already able to print stack traces in case of an abnormal abort, which uses some gcc-specific magic. <br>
<br>
My idea is to link our tool to lldb.so when compiling for debugging and to use the library to print a stack trace programmatically, including demangled names and correct line numbers. However, I don't really know how to start thus I am wondering<br>
<br>
- has someone here done or seen something like this before? <br>
- is there a tutorial for linking to lldb.so and making use of it through C++? <br>
- would this also work when compiling with other compilers than clang? <br>
<br>
Any help or pointers to relevant projects/documentation etc is greatly appreciated! <br>
<br>
Regards, <br>
<br>
Michael <br>
<br>
--<br>
Michael Schlottke-Lakemper<br>
<br>
SimLab Highly Scalable Fluids & Solids Engineering<br>
Jülich Aachen Research Alliance (JARA-HPC)<br>
RWTH Aachen University<br>
<br>
Wüllnerstraße 5a<br>
52062 Aachen<br>
Germany<br>
<br></span>
Phone: <a href="tel:%2B49%20%28241%29%2080%2095188" value="+492418095188" target="_blank">+49 (241) 80 95188</a><br>
Fax: <a href="tel:%2B49%20%28241%29%2080%2092257" value="+492418092257" target="_blank">+49 (241) 80 92257</a><br>
Mail: <a href="mailto:m.schlottke-lakemper@aia.rwth-aachen.de" target="_blank">m.schlottke-lakemper@aia.rwth-aachen.de</a><br>
Web: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.jara.org_jara-2Dhpc&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=DDUMf06MYELAe1Nlv7KChiwJLLHbYha4jtK_AOiWqwQ&m=xVT0HkfeqC08Qoa93HzeQ55AmpxQb4Ecvst4ybPmxRU&s=quSM9W4gQgTeWyTwz1wYwFfT6z6UhfjDndUcvvpCeAs&e=" rel="noreferrer" target="_blank">http://www.jara.org/jara-hpc</a><br>
<br>
_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank">lldb-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
</blockquote></div>
<br>_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
<br></blockquote></div><br></div>