www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - A new debugger for Linux - would it work for D?

reply Cristian Vlasceanu <cristian zero-bugs.com> writes:
Hi,
I have written a Linux debugger (so far targeting C and C++) and from
conversations with Walter and Andrei Alexandrescu emerged the idea of adapting
it to support D.

The areas that might need some not-so-trivial effort are the stack unwinding
(as I understood from Walter, D sometimes uses stack frame layouts that may
not be compatible with C) and the expression interpreter.

Take a look, and if you think the investment in D is worthwhile I will give it
a shot.

Thank you,
Cristian Vlasceanu (http://www.zero-bugs.com)
Nov 21 2006
next sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Cristian Vlasceanu wrote:
 Hi,
 I have written a Linux debugger (so far targeting C and C++) and from
 conversations with Walter and Andrei Alexandrescu emerged the idea of adapting
 it to support D.
 
 The areas that might need some not-so-trivial effort are the stack unwinding
 (as I understood from Walter, D sometimes uses stack frame layouts that may
 not be compatible with C) and the expression interpreter.
 
 Take a look, and if you think the investment in D is worthwhile I will give it
 a shot.
 
 Thank you,
 Cristian Vlasceanu (http://www.zero-bugs.com)
That would be fantastic. I'm primarily on Windows, but I'd probably fire up my VMWare Ubuntu install just to be able to use a decent D debugger. Would this be for GDC only? Or both DMD & GDC? --bb
Nov 21 2006
parent reply Cristian Vlasceanu <cristian zero-bugs.com> writes:
Pardon my ignorance, what is GDC? The GNU implementation of D?

If that is the case, then the answer is that it depends on which side the work
will be done, i.e. it might be the case that the compiler need be tweaked to
generate DWARF to help the debugger, not just for the debugger to be extended to
understand D.

The way the debugger works to date is to look up for stack unwinding info
(generated for C++ exception unwinding), and, if not found, it falls back to the
"classical" linked list of frames approach, using the instruction pointer, stack
pointer and frame register.

I must admit I have not tried interoperating Zero and D, I just wanted to see if
there is enough interest in the community to justify the work.

Cristian
Nov 21 2006
next sibling parent Lutger <lutger.blijdestijn gmail.com> writes:
Cristian Vlasceanu wrote:
 I must admit I have not tried interoperating Zero and D, I just wanted to see
if
 there is enough interest in the community to justify the work.
 
 Cristian
I'm thinking about getting into linux and would appreciate the work, of course. Can't speak for other people, but I suspect most would like a good debugger for D very much. It seems like Zero is also designed for making it easier for other tools to use it, nice one. Good luck with development, I hope you will decide to make the effort.
Nov 21 2006
prev sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Cristian Vlasceanu wrote:
 Pardon my ignorance, what is GDC? The GNU implementation of D?
GDC uses the GCC backend to generate code. DMD uses the Digtal Mars backend to generate code. GDC is out of date. That's about all I know. I don't know if they have different object formats or different formats for debug info. --bb
Nov 21 2006
parent reply Carlos Santander <csantander619 gmail.com> writes:
Bill Baxter escribió:
 Cristian Vlasceanu wrote:
 Pardon my ignorance, what is GDC? The GNU implementation of D?
GDC uses the GCC backend to generate code. DMD uses the Digtal Mars backend to generate code. GDC is out of date.
Err... latest svn revision (41) puts gdc up with dmd 0.174...
 That's about all I know.
 
 I don't know if they have different object formats or different formats 
 for debug info.
 
 
 --bb
-- Carlos Santander Bernal
Nov 21 2006
next sibling parent Bill Baxter <dnewsgroup billbaxter.com> writes:
Carlos Santander wrote:
 Bill Baxter escribió:
 Cristian Vlasceanu wrote:
 Pardon my ignorance, what is GDC? The GNU implementation of D?
GDC uses the GCC backend to generate code. DMD uses the Digtal Mars backend to generate code. GDC is out of date.
Err... latest svn revision (41) puts gdc up with dmd 0.174...
Cool beans! (Not sure how I was supposed to know that, though, given that there hasn't been an announcement here, AFAIK. But great news nonetheless.) --bb
Nov 21 2006
prev sibling parent reply "John Reimer" <terminal.node gmail.com> writes:
On Tue, 21 Nov 2006 19:47:52 -0800, Carlos Santander  
<csantander619 gmail.com> wrote:

 Bill Baxter escribió:
 Cristian Vlasceanu wrote:
 Pardon my ignorance, what is GDC? The GNU implementation of D?
GDC uses the GCC backend to generate code. DMD uses the Digtal Mars backend to generate code. GDC is out of date.
Err... latest svn revision (41) puts gdc up with dmd 0.174...
Are you sure? The svn revision I have on my computer is 41 and it hasn't been updated for awhile now. I keep doing an "svn update" and there are no changes. Is there a different svn repository that I'm not aware of? -JJR
Nov 21 2006
parent reply Carlos Santander <csantander619 gmail.com> writes:
John Reimer escribió:
 On Tue, 21 Nov 2006 19:47:52 -0800, Carlos Santander 
 <csantander619 gmail.com> wrote:
 
 Bill Baxter escribió:
 Cristian Vlasceanu wrote:
 Pardon my ignorance, what is GDC? The GNU implementation of D?
GDC uses the GCC backend to generate code. DMD uses the Digtal Mars backend to generate code. GDC is out of date.
Err... latest svn revision (41) puts gdc up with dmd 0.174...
Are you sure? The svn revision I have on my computer is 41 and it hasn't been updated for awhile now. I keep doing an "svn update" and there are no changes. Is there a different svn repository that I'm not aware of? -JJR
branches/gdc-0.20-dev/d/ChangeLog : 2006-11-18 David Friedman <dvdfrdmn users.sf.net> Rest of DMD 0.174 merge: (etc) -- Carlos Santander Bernal
Nov 21 2006
parent "John Reimer" <terminal.node gmail.com> writes:
On Tue, 21 Nov 2006 21:57:12 -0800, Carlos Santander  
<csantander619 gmail.com> wrote:

 John Reimer escribió:
 On Tue, 21 Nov 2006 19:47:52 -0800, Carlos Santander  
 <csantander619 gmail.com> wrote:

 Bill Baxter escribió:
 Cristian Vlasceanu wrote:
 Pardon my ignorance, what is GDC? The GNU implementation of D?
GDC uses the GCC backend to generate code. DMD uses the Digtal Mars backend to generate code. GDC is out of date.
Err... latest svn revision (41) puts gdc up with dmd 0.174...
Are you sure? The svn revision I have on my computer is 41 and it hasn't been updated for awhile now. I keep doing an "svn update" and there are no changes. Is there a different svn repository that I'm not aware of? -JJR
branches/gdc-0.20-dev/d/ChangeLog : 2006-11-18 David Friedman <dvdfrdmn users.sf.net> Rest of DMD 0.174 merge: (etc)
my changelog doesn't say that... I must have downloaded a different branch -JJR
Nov 21 2006
prev sibling next sibling parent reply John Demme <me teqdruid.com> writes:
Cristian Vlasceanu wrote:

 Hi,
 I have written a Linux debugger (so far targeting C and C++) and from
 conversations with Walter and Andrei Alexandrescu emerged the idea of
 adapting it to support D.
 
 The areas that might need some not-so-trivial effort are the stack
 unwinding (as I understood from Walter, D sometimes uses stack frame
 layouts that may not be compatible with C) and the expression interpreter.
 
 Take a look, and if you think the investment in D is worthwhile I will
 give it a shot.
 
 Thank you,
 Cristian Vlasceanu (http://www.zero-bugs.com)
You would totally be my hero. I'm the one who wrote (and maintains) the GDB D patches project... so far it only supports D symbol demangling, and not even all that well. I haven't done more since GDB is bloody impossible to hack (as your website mentions.) DMD's DWARF output is incomplete (outright wrong sometimes, actually see bug think Walter will be much more inclined to add more DWARF support (and fix the existing support) if someone is actually developing a debugging program for D code and is willing to give him advice on the DWARF format (as I recall, he wasn't particularly excited about learning DWARF to initially implement the output.) In short, if Zero were to get good (or even better- great) D support, I'm pretty confident nearly every Linux D user would use it, and the Windows D users would be very jelous. BTW- I think Zero is a great idea. I haven't read over the entire web site yet, but I like it a lot. GDB sucks! Choice is great! Good luck with D. If you have any questions, I'm happy to answer them personally or feel free to post to the newsgroups here. The D community tends to be very friendly and helpful. You might also check out dsource.org for some tutorials and interesting D projects. -- ~John Demme me teqdruid.com http://www.teqdruid.com/
Nov 21 2006
next sibling parent reply Cristian Vlasceanu <cristian zero-bugs.com> writes:
D has a demangling scheme that is not compatible with C++?
Then that's another area that needs work in the debugger.

The details of generating the correct DWARF output might be addressed by using
the
producer functions in Dave Anderson's libdwarf
(http://reality.sgiweb.org/davea/dwarf.html). Zero uses the consumer side of
that
library and I am pleased with the results so far.

Meanwhile I will try and educate myself some more wrt to D.

Thank you kindly for your warm thoughts! It is also great to know that someone
has
explored these issues before.
Nov 21 2006
parent reply =?ISO-8859-1?Q?Thomas_K=FChne?= <thomas-dloop kuehne.cn> writes:
 boundary="------------000509040909040507050301"

This is a multi-part message in MIME format.
--------------000509040909040507050301
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas --------------000509040909040507050301 Content-Type: application/zip; name="ddemangled.zip" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ddemangled.zip" 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 DgAOADoEAADYSgAAAAA= --------------000509040909040507050301--
Nov 21 2006
parent reply Don Clugston <dac nospam.com.au> writes:
Thomas Kühne wrote:
 Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas
Wow, it's interesting to compare yours with my compile-time demangler. They are both about the same number of lines of code (and both seem more comprehensive than the one in Phobos).
Nov 22 2006
parent reply Walter Bright <newshound digitalmars.com> writes:
Don Clugston wrote:
 Thomas Kühne wrote:
 Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas
Wow, it's interesting to compare yours with my compile-time demangler. They are both about the same number of lines of code (and both seem more comprehensive than the one in Phobos).
Would you two care to take the best of both, and we can replace the Phobos one?
Nov 22 2006
next sibling parent reply Don Clugston <dac nospam.com.au> writes:
Walter Bright wrote:
 Don Clugston wrote:
 Thomas Kühne wrote:
 Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas
Wow, it's interesting to compare yours with my compile-time demangler. They are both about the same number of lines of code (and both seem more comprehensive than the one in Phobos).
Would you two care to take the best of both, and we can replace the Phobos one?
I think there a couple of issues in the mangling algorithm which need to be addressed first. - The bug with local alias template parameters (depends on where it's instantiated from). mtype.c line 174-175, mangleChar[Tbit] = 'b'; mangleChar[Tbool] = 'x'; This should be changed so they are both 'b'. - Items that use D mangling but don't have D linkage. I suggest changing those cases to use "0" then the linkage type ('W' for Windows, 'U', for C, etc, same as for delegate/function pointers), then the length. So instead of main3abci it would be 0U4main3abci for void main() { int abc; } making it distinguishable from extern(Windows) { int main3abci; } - template floating point value parameters should use big-endian order (with exponent first) which would be moderately human-readable, instead of the current order, which makes no sense. expression.c line 1316 is currently for (int i = 0; i < REALSIZE-REALPAD; i++) buf->printf("%02x", p[i]); but should be for (int i = REALSIZE-REALPAD-1; i >=0; i--) buf->printf("%02x", p[i]); (Actually it would be even better if the implicit bit were stripped out for x86; that would make it more compatible across platforms, and would mean 0x1.123456789ABCDEDEp+0 would be mangled as: "3FFF123456789ABCDEDE" -- but proper cross-platform support needs a bit more thought).
Nov 23 2006
next sibling parent reply Bruno Medeiros <brunodomedeiros+spam com.gmail> writes:
Don Clugston wrote:
 
 - Items that use D mangling but don't have D linkage. I suggest changing 
 those cases to use "0" then the linkage type ('W' for Windows, 'U', for 
 C, etc, same as for delegate/function pointers), then the length.
 So instead of
 main3abci
 
 it would be
 0U4main3abci
 
 for
 
 void main()
 {
   int abc;
 }
 
 
 making it distinguishable from
 extern(Windows)
 {
   int main3abci;
 }
 
Can we define functions that do not have D linkage, but have D name mangling? If so, does that even make sense? It was my understanding that any function with linkage other than D is used for obj/lib/dll level compatibility with other programs written in other languages (i.e., ABI level compatibility). As such, these other languages don't understand D name mangling but only C name mangling, so what's a non-D-linkage with D-name-mangling for? -- Bruno Medeiros - MSc in CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
Nov 23 2006
next sibling parent Don Clugston <dac nospam.com.au> writes:
Bruno Medeiros wrote:
 Don Clugston wrote:
 - Items that use D mangling but don't have D linkage. I suggest 
 changing those cases to use "0" then the linkage type ('W' for 
 Windows, 'U', for C, etc, same as for delegate/function pointers), 
 then the length.
 So instead of
 main3abci

 it would be
 0U4main3abci

 for

 void main()
 {
   int abc;
 }


 making it distinguishable from
 extern(Windows)
 {
   int main3abci;
 }
Can we define functions that do not have D linkage, but have D name mangling? If so, does that even make sense? It was my understanding that any function with linkage other than D is used for obj/lib/dll level compatibility with other programs written in other languages (i.e., ABI level compatibility). As such, these other languages don't understand D name mangling but only C name mangling, so what's a non-D-linkage with D-name-mangling for?
These symbols cannot be externally linked directly, but it can be important for eg alias template parameters. (Everything needs to be manglable, even it can't be linked directly). extern(C) { void func() { // 'func' uses C name mangling void inner() { // 'inner' uses D name mangling. // So 'func.inner' is a hybrid. } } } It's even possible to have extern(Windows) inner functions inside extern(C) functions!
Nov 23 2006
prev sibling parent reply Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
Bruno Medeiros wrote:
 Can we define functions that do not have D linkage, but have D name 
 mangling?
Not as far as I know.
 If so, does that even make sense? It was my understanding that
 any function with linkage other than D is used for obj/lib/dll level 
 compatibility with other programs written in other languages (i.e., ABI 
 level compatibility). As such, these other languages don't understand D 
 name mangling but only C name mangling, so what's a non-D-linkage with 
 D-name-mangling for?
I have on several occasions declared functions as extern(C) in order to be able to access them from inline assembly. I needed to be sure about the calling convention, and at that time the D calling convention wasn't documented as well as it is now. (http://www.digitalmars.com/d/abi.html) Name mangling is wholly irrelevant to this, though. In fact my backtraces would've looked better if all names had D mangling, so I would have liked name mangling to have been preserved.
Nov 23 2006
parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Frits van Bommel schrieb am 2006-11-23:
 Bruno Medeiros wrote:
 Can we define functions that do not have D linkage, but have D name 
 mangling?
Not as far as I know.
 If so, does that even make sense? It was my understanding that
 any function with linkage other than D is used for obj/lib/dll level 
 compatibility with other programs written in other languages (i.e., ABI 
 level compatibility). As such, these other languages don't understand D 
 name mangling but only C name mangling, so what's a non-D-linkage with 
 D-name-mangling for?
current mangling:
 outer
 outer5innerFZv
Don's proposal:
 outer
 0U5outer5innerFZv
Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFZcg8LK5blCcjpWoRAu/hAJ9gADyqXbbt8xQXvZw+YD+hF0gbVQCgh8LT TfV4kEQMllZ7m4WFtNgSQNc= =gTTT -----END PGP SIGNATURE-----
Nov 23 2006
parent reply Bruno Medeiros <brunodomedeiros+spam com.gmail> writes:
Thomas Kuehne wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
 Frits van Bommel schrieb am 2006-11-23:
 Bruno Medeiros wrote:
 Can we define functions that do not have D linkage, but have D name 
 mangling?
Not as far as I know.
 If so, does that even make sense? It was my understanding that
 any function with linkage other than D is used for obj/lib/dll level 
 compatibility with other programs written in other languages (i.e., ABI 
 level compatibility). As such, these other languages don't understand D 
 name mangling but only C name mangling, so what's a non-D-linkage with 
 D-name-mangling for?
current mangling:
 outer
 outer5innerFZv
Don's proposal:
 outer
 0U5outer5innerFZv
Thomas
Ah, got it. But in terms of calling convention, is outer.inner still of regular D calling convention? (I think so, given some obj2asm tests I did) As for fixes, how about just mangling the inner function with a full D name mangling, treating the parent names as if they were D-mangled too?: _D4modl4funcFZv5innerFZv This way we (maybe) can't tell the calling convention of the parent functions... but does that matter? -- Bruno Medeiros - MSc in CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
Nov 23 2006
parent Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
Bruno Medeiros wrote:
 As for fixes, how about just mangling the inner function with a full D 
 name mangling, treating the parent names as if they were D-mangled too?:
 _D4modl4funcFZv5innerFZv
 This way we (maybe) can't tell the calling convention of the parent 
 functions... but does that matter?
It might matter for something like DDL if it wants to call a function in a dynamically-loaded module. It's kind of important to know the calling convention for that :). (Not sure if DDL currently does anything like this, but if not it might in the future)
Nov 23 2006
prev sibling parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Don Clugston schrieb am 2006-11-23:
 Walter Bright wrote:
 Don Clugston wrote:
 Thomas Kühne wrote:
 Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas
Wow, it's interesting to compare yours with my compile-time demangler. They are both about the same number of lines of code (and both seem more comprehensive than the one in Phobos).
Would you two care to take the best of both, and we can replace the Phobos one?
I think there a couple of issues in the mangling algorithm which need to be addressed first.
<snip>
 - Items that use D mangling but don't have D linkage. I suggest changing 
 those cases to use "0" then the linkage type ('W' for Windows, 'U', for 
 C, etc, same as for delegate/function pointers), then the length.
 So instead of
 main3abci

 it would be
 0U4main3abci
I dislike unnecessary special cases: DMD-0.174 generates the following symbols (special cases are marked by an asterisk):
 _Class_4wood4Tree *
 _D4wood4Tree11_staticCtorFZv
 _D4wood4Tree5_dtorFZv
 _init_4wood4Tree *
 _modctor_4wood *
 outer
 outer6middleWZi *
 outer6middleWZi5innerFZv *
 _vtbl_4wood4Tree *
I propose the following mangling:
 _D4wood4Tree9__Class__Pv
 _D4wood4Tree12__staticCtorFZv
 _D4wood4Tree6__dtorFZv
 _D4wood4Tree8__init__Pv
 _D4wood11__modctor__FZv
 outer
 _D4wood5outerFZv6middleWZi
 _D4wood5outerFZv6middleWZi5innerFZv
 _D4wood4Tree8__vtbl__Av
There are no special cases(identifiers starting with two underscores are reserved), thus no need for the demangler to know anything about the RT's internals. Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFZhBmLK5blCcjpWoRAhvHAJ48XOpVGhQrtWqzUlnnSwWYa5ZctwCgiJ5g DU12Ih86ucKYv9td8e3iSJ0= =0YBV -----END PGP SIGNATURE-----
Nov 23 2006
parent Don Clugston <dac nospam.com.au> writes:
Thomas Kuehne wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
 Don Clugston schrieb am 2006-11-23:
 Walter Bright wrote:
 Don Clugston wrote:
 Thomas K�hne wrote:
 Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas
Wow, it's interesting to compare yours with my compile-time demangler. They are both about the same number of lines of code (and both seem more comprehensive than the one in Phobos).
Would you two care to take the best of both, and we can replace the Phobos one?
I think there a couple of issues in the mangling algorithm which need to be addressed first.
<snip>
 - Items that use D mangling but don't have D linkage. I suggest changing 
 those cases to use "0" then the linkage type ('W' for Windows, 'U', for 
 C, etc, same as for delegate/function pointers), then the length.
 So instead of
 main3abci

 it would be
 0U4main3abci
I dislike unnecessary special cases: DMD-0.174 generates the following symbols (special cases are marked by an asterisk):
 _Class_4wood4Tree *
 _D4wood4Tree11_staticCtorFZv
 _D4wood4Tree5_dtorFZv
 _init_4wood4Tree *
 _modctor_4wood *
 outer
 outer6middleWZi *
 outer6middleWZi5innerFZv *
 _vtbl_4wood4Tree *
I propose the following mangling:
 _D4wood4Tree9__Class__Pv
 _D4wood4Tree12__staticCtorFZv
 _D4wood4Tree6__dtorFZv
 _D4wood4Tree8__init__Pv
 _D4wood11__modctor__FZv
 outer
 _D4wood5outerFZv6middleWZi
 _D4wood5outerFZv6middleWZi5innerFZv
 _D4wood4Tree8__vtbl__Av
There are no special cases(identifiers starting with two underscores are reserved), thus no need for the demangler to know anything about the RT's internals.
Agreed, I like that *much* better than my proposal. BTW, unittest is another special case, and should be treated in the same way. - Don.
Nov 23 2006
prev sibling parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Walter Bright schrieb am 2006-11-22:
 Don Clugston wrote:
 Thomas Kühne wrote:
 Cristian Vlasceanu wrote:
 D has a demangling scheme that is not compatible with C++?
 Then that's another area that needs work in the debugger.
see attachment Thomas
Wow, it's interesting to compare yours with my compile-time demangler. They are both about the same number of lines of code (and both seem more comprehensive than the one in Phobos).
Would you two care to take the best of both, and we can replace the Phobos one?
http://d.puremagic.com/issues/show_bug.cgi?id=588 (though this doesn't handle any special cases) Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFZhvWLK5blCcjpWoRAsfwAJ9V+CAQRZnDnXlkGZSFy2Lj0tD87wCfW22R Tsl/9CQuSO/6MQGbTbPmSdE= =G5tW -----END PGP SIGNATURE-----
Nov 23 2006
parent reply Walter Bright <newshound digitalmars.com> writes:
Thomas Kuehne wrote:
 http://d.puremagic.com/issues/show_bug.cgi?id=588
Thanks!
Nov 23 2006
parent reply Cristian Vlasceanu <cristian zero-bugs.com> writes:
I owe a clarification (especially since some of you have posted code in response
to my demangling question).

Zero is NOT open source, and my long term intent is a commercially supported
product (see some of my ramblings here: http://the-free-meme.blogspot.com/).

Also I see a lot of domain knowledge wrt the inner workings of D in this forum.

I thinks it would be a good idea (architecturally and ethically) that Zero
provide
hooks for D-supporting plugins and shared objects. Such modules could be open
source themselves, or othewise licensed, as their respective authors see fit.
The
demangler for example is already based on a factory pattern (it deals with
legacy
gcc and the Itanium ABI), and delegating to a .so that implements D demangling
would not be very hard to do.
Nov 23 2006
parent reply Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
Cristian Vlasceanu wrote:
 I owe a clarification (especially since some of you have posted code in
response
 to my demangling question).
 
 Zero is NOT open source, and my long term intent is a commercially supported
 product (see some of my ramblings here: http://the-free-meme.blogspot.com/).
Well, Thomas's code is GPL-with-exception, so you can link it to a commercial program without any problem, as long as you distribute any modifications to his source.
 Also I see a lot of domain knowledge wrt the inner workings of D in this forum.
 
 I thinks it would be a good idea (architecturally and ethically) that Zero
provide
 hooks for D-supporting plugins and shared objects. Such modules could be open
 source themselves, or othewise licensed, as their respective authors see fit.
The
 demangler for example is already based on a factory pattern (it deals with
legacy
 gcc and the Itanium ABI), and delegating to a .so that implements D demangling
 would not be very hard to do.
That would work as well, of course.
Nov 24 2006
parent reply Walter Bright <newshound digitalmars.com> writes:
Frits van Bommel wrote:
 I thinks it would be a good idea (architecturally and ethically) that 
 Zero provide
 hooks for D-supporting plugins and shared objects. Such modules could 
 be open
 source themselves, or othewise licensed, as their respective authors 
 see fit. The
 demangler for example is already based on a factory pattern (it deals 
 with legacy
 gcc and the Itanium ABI), and delegating to a .so that implements D 
 demangling
 would not be very hard to do.
That would work as well, of course.
It would be better for D users if support was built in, so it would work out of the box with no hassle. Having the hooks for plugins, however, is still a very good idea and should be done. That will help future proof the debugger.
Nov 24 2006
parent reply BCS <BCS pathilink.com> writes:
Walter Bright wrote:
 Frits van Bommel wrote:
 I thinks it would be a good idea (architecturally and ethically) that 
 Zero provide
 hooks for D-supporting plugins and shared objects. Such modules could 
 be open
 source themselves, or othewise licensed, as their respective authors 
 see fit. The
 demangler for example is already based on a factory pattern (it deals 
 with legacy
 gcc and the Itanium ABI), and delegating to a .so that implements D 
 demangling
 would not be very hard to do.
That would work as well, of course.
It would be better for D users if support was built in, so it would work out of the box with no hassle. Having the hooks for plugins, however, is still a very good idea and should be done. That will help future proof the debugger.
You could ship it with the plug in pre-installed.
Nov 24 2006
parent Cristian Vlasceanu <cristian zero-bugs.com> writes:
BCS wrote:
 Walter Bright wrote:
 Frits van Bommel wrote:
 I thinks it would be a good idea (architecturally and ethically) 
 that Zero provide
 hooks for D-supporting plugins and shared objects. Such modules 
 could be open
 source themselves, or othewise licensed, as their respective authors 
 see fit. The
 demangler for example is already based on a factory pattern (it 
 deals with legacy
 gcc and the Itanium ABI), and delegating to a .so that implements D 
 demangling
 would not be very hard to do.
That would work as well, of course.
It would be better for D users if support was built in, so it would work out of the box with no hassle. Having the hooks for plugins, however, is still a very good idea and should be done. That will help future proof the debugger.
You could ship it with the plug in pre-installed.
Yes this is exactly what I have in mind, by "hooks and plugins" I meant to have the D support *dynamically* linked in, so that it can be upgraded or replaced without having to recompile the debugger.
Nov 24 2006
prev sibling parent Cristian Vlasceanu <cristian zero-bugs.com> writes:
Do you have any D code samples that confuse GDB? (bad line numbers, weird stack
unwinding, etc).

 - Cristian
Nov 30 2006
prev sibling next sibling parent reply "John Reimer" <terminal.node gmail.com> writes:
On Tue, 21 Nov 2006 15:50:30 -0800, Cristian Vlasceanu  
<cristian zero-bugs.com> wrote:

 Hi,
 I have written a Linux debugger (so far targeting C and C++) and from
 conversations with Walter and Andrei Alexandrescu emerged the idea of  
 adapting
 it to support D.

 The areas that might need some not-so-trivial effort are the stack  
 unwinding
 (as I understood from Walter, D sometimes uses stack frame layouts that  
 may
 not be compatible with C) and the expression interpreter.

 Take a look, and if you think the investment in D is worthwhile I will  
 give it
 a shot.

 Thank you,
 Cristian Vlasceanu (http://www.zero-bugs.com)
There would be a lot of support for that. Debuggers are an oft requested feature for D. -JJR
Nov 21 2006
parent freeagle <dalibor.free gmail.com> writes:
All current and future linux users coding in D would be very thankful, 
including me!

John Reimer wrote:
 On Tue, 21 Nov 2006 15:50:30 -0800, Cristian Vlasceanu 
 <cristian zero-bugs.com> wrote:
 
 Hi,
 I have written a Linux debugger (so far targeting C and C++) and from
 conversations with Walter and Andrei Alexandrescu emerged the idea of 
 adapting
 it to support D.

 The areas that might need some not-so-trivial effort are the stack 
 unwinding
 (as I understood from Walter, D sometimes uses stack frame layouts 
 that may
 not be compatible with C) and the expression interpreter.

 Take a look, and if you think the investment in D is worthwhile I will 
 give it
 a shot.

 Thank you,
 Cristian Vlasceanu (http://www.zero-bugs.com)
There would be a lot of support for that. Debuggers are an oft requested feature for D. -JJR
Nov 22 2006
prev sibling parent reply "Craig Black" <cblack ara.com> writes:
Currently there is no debugger tailored for D, so this would be great and 
appreciated by many.  However, how difficult would it be to make this 
portable to Windows as well?  Most D developers use Windows primarily.

-Craig
Nov 22 2006
next sibling parent "Kristian Kilpi" <kjkilpi gmail.com> writes:
On Wed, 22 Nov 2006 21:05:00 +0200, Craig Black <cblack ara.com> wrote:

 Currently there is no debugger tailored for D, so this would be great and
 appreciated by many.  However, how difficult would it be to make this
 portable to Windows as well?  Most D developers use Windows primarily.

 -Craig
Oh, it would be really great to have a debugger! On Windows too (I'm using win).
Nov 22 2006
prev sibling parent reply "John Reimer" <terminal.node gmail.com> writes:
On Wed, 22 Nov 2006 11:05:00 -0800, Craig Black <cblack ara.com> wrote:

 Currently there is no debugger tailored for D, so this would be great and
 appreciated by many.  However, how difficult would it be to make this
 portable to Windows as well?  Most D developers use Windows primarily.

 -Craig
Do they? I wouldn't say that anymore. -JJR
Nov 22 2006
parent reply freeagle <dalibor.free gmail.com> writes:
John Reimer wrote:
 On Wed, 22 Nov 2006 11:05:00 -0800, Craig Black <cblack ara.com> wrote:
 
 Currently there is no debugger tailored for D, so this would be great and
 appreciated by many.  However, how difficult would it be to make this
 portable to Windows as well?  Most D developers use Windows primarily.

 -Craig
Do they? I wouldn't say that anymore. -JJR
could be interesting to somehow get those numbers
Nov 22 2006
parent "John Reimer" <terminal.node gmail.com> writes:
On Wed, 22 Nov 2006 14:52:20 -0800, freeagle <dalibor.free gmail.com>  
wrote:

 John Reimer wrote:
 On Wed, 22 Nov 2006 11:05:00 -0800, Craig Black <cblack ara.com> wrote:

 Currently there is no debugger tailored for D, so this would be great  
 and
 appreciated by many.  However, how difficult would it be to make this
 portable to Windows as well?  Most D developers use Windows primarily.

 -Craig
Do they? I wouldn't say that anymore. -JJR
could be interesting to somehow get those numbers
I agree.
Nov 22 2006