<div dir="ltr"><div style="font-size:12.8px"><div>UPDATE:</div><div><br></div><div>* b Loader.d:123 didn't help either:</div><div><br></div><div>error: parsing line table prologue at 0x00000000 (parsing ended around 0x00000000</div><div>Breakpoint 1: where = mybinary.temp`<wbr>D4gtkc6Loader6Linker12_<wbr>staticDtor3FZv, address = 0x0000000100315410</div><div>(process exited despite breakpoint); dmd's dwarf debug info seems incorrect</div><div><br></div><div>* b _d_throwc #does nothing</div><div><br></div><div>* b _d_print_throwable: doesn't show useful context (only shows backtrace after stack unwinding)</div><div>(lldb) bt</div><div>* thread #1: tid = 0x6187c1, 0x0000000100191c30 mybinary.temp _d_print_throwable, stop reason = breakpoint 4.1</div><div>  * frame #0: 0x0000000100191c30 mybinary.temp _d_print_throwable</div><div>    frame #1: 0x0000000100191530 mybinary.temp rt_init + 160</div><div>    frame #2: 0x0000000100191a9a mybinary.temp D2rt6dmain211_d_run_<wbr>mainUiPPaPUAAaZiZ6runAllMFZv + 14</div><div>    frame #3: 0x0000000100191a40 mybinary.temp D2rt6dmain211_d_run_<wbr>mainUiPPaPUAAaZiZ7tryExecMFMDF<wbr>ZvZv + 36</div><div>    frame #4: 0x00000001001919a6 mybinary.temp _d_run_main + 498</div><div>    frame #5: 0x0000000100001efa mybinary.temp main + 34</div><div>    frame #6: 0x00007fff89ad65ad libdyld.dylib start + 1</div><div><br></div><div>* b _<wbr>D4gtkc6Loader6Linker11loadLibr<wbr>aryFAyaZv isn't very helpful since this function is complex (and could be inlined more generally) and that function is called many times before the exception is thrown</div><div>```</div><div>  public static void loadLibrary(string library)</div><div>  {</div><div>    void* handle = pLoadLibrary(library);</div><div><br></div><div>    //TODO: A more general way to try more than one version.</div><div>    if ( handle is null && library == importLibs[LIBRARY.GSV] )</div><div>      handle = pLoadLibrary(importLibs[<wbr>LIBRARY.GSV1]);</div><div><br></div><div>    if ( handle is null )</div><div>      throw new Exception("Library load failed: " ~ library);</div><div><br></div><div>    loadedLibraries[library] = handle;</div><div>  }</div><div>```</div><div><br></div><div>but at least we get a better context:</div><div><br></div><div>(lldb) bt</div><div>* thread #1: tid = 0x6187c1, 0x0000000100315878 mybinary.temp D4gtkc6Loader6Linker11loadLibr<wbr>aryFAyaZv, stop reason = breakpoint 3.1</div><div>  * frame #0: 0x0000000100315878 mybinary.temp D4gtkc6Loader6Linker11loadLibr<wbr>aryFAyaZv</div><div>    frame #1: 0x0000000100315699 mybinary.temp D4gtkc6Loader6Linker9getSymbol<wbr>FAyaAAyaXPv + 237</div><div>    frame #2: 0x00000001003155a4 mybinary.temp D4gtkc6Loader6Linker9getSymbol<wbr>FAyaAE4gtkc5paths7LIBRARYXPv + 232</div><div>    frame #3: 0x00000001003163bd mybinary.temp D4gtkc6Loader6Linker39__<wbr>T4linkTPUZE4gtkc12gobjecttypes<wbr>5GTypeZ4linkFKPUZE4gtkc12gobje<wbr>cttypes5GTypeAyaAE4gtkc5paths7<wbr>LIBRARYXv + 69 at .dub/packages/gtk-d-3.3.1/gtk-<wbr>d/src/gtkc/Loader.d:46</div><div>    frame #4: 0x000000010038c75d mybinary.temp D4gtkc3atk18_<wbr>sharedStaticCtor4FZv + 77 at .dub/packages/gtk-d-3.3.1/gtk-<wbr>d/src/gtkc/atk.d:36</div><div>    frame #5: 0x000000010038c67d mybinary.temp _D4gtkc3atk15__<wbr>modsharedctorFZv + 9 at .dub/packages/gtk-d-3.3.1/gtk-<wbr>d/src/gtkc/atk.d:32</div><div>    frame #6: 0x0000000100199c17 mybinary.temp D2rt5minfo67__<wbr>T14runModuleFuncsS442rt5minfo1<wbr>1ModuleGroup8runCtorsMFZ9__<wbr>lambda2Z14runModuleFuncsMFAxPy<wbr>S6object10ModuleInfoZv + 91</div><div>    frame #7: 0x0000000100199785 mybinary.temp D2rt5minfo11ModuleGroup8runCto<wbr>rsMFZv + 37</div><div>    frame #8: 0x0000000100199a91 mybinary.temp D2rt5minfo13rt_moduleCtorUZ14_<wbr>_<wbr>foreachbody1MFKS2rt19sections_<wbr>osx_x86_6412SectionGroupZi + 45</div><div>    frame #9: 0x0000000100199a60 mybinary.temp rt_moduleCtor + 20</div><div>    frame #10: 0x00000001001914f3 mybinary.temp rt_init + 99</div><div>    frame #11: 0x0000000100191a9a mybinary.temp D2rt6dmain211_d_run_<wbr>mainUiPPaPUAAaZiZ6runAllMFZv + 14</div><div>    frame #12: 0x0000000100191a40 mybinary.temp D2rt6dmain211_d_run_<wbr>mainUiPPaPUAAaZiZ7tryExecMFMDF<wbr>ZvZv + 36</div><div>    frame #13: 0x00000001001919a6 mybinary.temp _d_run_main + 498</div><div>    frame #14: 0x0000000100001efa mybinary.temp main + 34</div><div>    frame #15: 0x00007fff89ad65ad libdyld.dylib start + 1</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Ideally there should be a way (via a runtime or compile time option) to wrap the exception throwing (during rt_moduleCtor) inside a extern(C) function that we can put a breakpoint on (and possibly even call backtrace_symbols on)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 27, 2016 at 2:19 PM, Timothee Cour <span dir="ltr"><<a href="mailto:thelastmammoth@gmail.com" target="_blank">thelastmammoth@gmail.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">in the process of trying to debug <a href="https://github.com/BlackEdder/ggplotd/issues/32" target="_blank">https://github.com/<wbr>BlackEdder/ggplotd/issues/32</a> I would like to get a stracktrace and/or put a breakpoint before exception is thrown:<div><br></div><div><br></div><div>```</div><div>lldb $binary</div><div>r<br></div><div><div>(lldb)</div><div>Process 34168 resuming</div><div>object.Exception@../../../../.<wbr>dub/packages/gtk-d-3.3.1/gtk-<wbr>d/src/gtkc/Loader.d(123): Library load failed: libatk-1.0.dylib</div><div>Process 34168 exited with status = 1 (0x00000001)</div></div><div>```<br></div><div><br></div><div>Adding</div><div>```</div><div><div>b _d_throwc #does nothing<br></div></div><div>```</div><div><br></div><div>didn't help, also, it hasn't entered d main yet so `Runtime.traceHandler = &defaultTraceHandler;` isn't helpful.</div><div><br></div><div>The fix here was to lookup the code, find the corresponding mangled name location and add a breakpoint via `b _<wbr>D4gtkc6Loader6Linker11loadLibr<wbr>aryFAyaZv` but is there a general fix?</div><div><br></div></div>
</blockquote></div><br></div>