digitalmars.D - Stack trace linux/windows why the difference
- Domingo Alvarez Duarte (74/74) Jul 21 2014 Hello !
- Domingo Alvarez Duarte (9/9) Jul 21 2014 After writing this post I found the place and the why:
- Trass3r (1/4) Jul 21 2014 That's the spirit!
- deadalnix (4/13) Jul 21 2014 Worth looking at:
- Domingo Alvarez Duarte (6/8) Jul 21 2014 Thanks for the link !
- Domingo Alvarez Duarte (8/8) Jul 22 2014 Trying to implement something on druntime.d I can see that what's
- Domingo Alvarez Duarte (5/5) Jul 23 2014 Today I found that the Tango library have code that scand the
- Andrei Alexandrescu (2/4) Jul 22 2014 That would be awesome! -- Andrei
Hello ! When getting runtime errors the stack trace on terminal is a lot confuse and hard to work with simple tools like scite text editor, also there is a difference between windows/linux, windows get a bit better/clean stack trace and includes line numbers, where is this info generated to try improve it ? Chhers ! =========windows D:\tutorial>dmd -gs -gc testStackTrace.d D:\tutorial>testStackTrace.exe finally: func2 object.Exception testStackTrace.d(12): on func2 ---------------- 0x004020E4 in void testStackTrace.func2() at D:\tutorial\testStackTrace.d(12) 0x0040210C in void testStackTrace.func3() at D:\tutorial\testStackTrace.d(18) 0x00402118 in _Dmain at D:\tutorial\testStackTrace.d(22) 0x00403188 in void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll().void __lambda1() 0x0040315B in void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() 0x00403074 in _d_run_main 0x00402A98 in main 0x00419C91 in mainCRTStartup 0x7598A55E in BaseThreadInitThunk 0x77E48F03 in RtlInitializeExceptionChain 0x77E48ED9 in RtlInitializeExceptionChain ========= =========linux $:~/dev/d/tutorial$ dmd -gs -gc testStackTrace.d $:~/dev/d/tutorial$ ./testStackTrace finally: func2 object.Exception testStackTrace.d(12): on func2 ---------------- ./testStackTrace(void testStackTrace.func3()+0x9) [0x434ef1] ./testStackTrace(_Dmain+0x9) [0x434f01] ./testStackTrace(_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ __lambda1MFZv+0x1f) [0x438a4f] ./testStackTrace(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x4389a2] ./testStackTrace(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()+0x30) [0x438a08] ./testStackTrace(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x4389a2] ./testStackTrace(_d_run_main+0x193) [0x438923] ./testStackTrace(main+0x25) [0x435acd] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f9227bfe76d] ========= =========testStackTrace.d import std.stdio; void func1() { //int x, z = 2/x; } void func2() { try { func1(); } catch(Exception e) { writeln("catch %s", e.msg);} finally {writeln("finally: func2"); throw new Exception("on func2");} } void func3() { func2(); } void main() { func3(); } =========
Jul 21 2014
After writing this post I found the place and the why: - druntime/src/core/runtime.d - Window implementation has extra code that search for more info to display - Linux only make calls to execinfo functions and dump what it gets On linux more work should be done to get line infos, I'm investigating how to get then. Cheers !
Jul 21 2014
On linux more work should be done to get line infos, I'm investigating how to get then. Cheers !That's the spirit!
Jul 21 2014
On Monday, 21 July 2014 at 21:06:54 UTC, Domingo Alvarez Duarte wrote:After writing this post I found the place and the why: - druntime/src/core/runtime.d - Window implementation has extra code that search for more info to display - Linux only make calls to execinfo functions and dump what it gets On linux more work should be done to get line infos, I'm investigating how to get then. Cheers !Worth looking at: https://github.com/bombela/backward-cpp
Jul 21 2014
On Tuesday, 22 July 2014 at 00:00:11 UTC, deadalnix wrote:Worth looking at: https://github.com/bombela/backward-cppThanks for the link ! I also found this one interesting http://blog.bigpixel.ro/2010/09/stack-unwinding-stack-trace-with-gcc/ . Cheers !
Jul 21 2014
Trying to implement something on druntime.d I can see that what's availlable there is the bare minimum we can not include anything from phobos. And when thre is a need to find/search on strings it's done by libc raw functions. So we have some nice facilities on phobos but can not use. Life would not be easier if some basic high level functions move to runtime ?
Jul 22 2014
Today I found that the Tango library have code that scand the executable to find function lines, but I could not get it to show all functions yet. Maybe the author of it "Fawzi Mohamed" are still around here and can explain/fix that implementation.
Jul 23 2014
On 7/21/14, 2:06 PM, Domingo Alvarez Duarte wrote:On linux more work should be done to get line infos, I'm investigating how to get then.That would be awesome! -- Andrei
Jul 22 2014