Debugging support for D - wiki
Bruno Medeiros
brunodomedeiros+dng at gmail.com
Fri Sep 27 03:52:52 PDT 2013
On 26/09/2013 16:13, Jacob Carlborg wrote:
> On 2013-09-26 14:22, Bruno Medeiros wrote:
>
>> Why would that be nice? It saves you the small hassle of downloading
>> GCC+GDB+GDC into it's own installation. With precompiled binaries for
>> your platform, that should take only 15 minutes of your time and then
>> you're set (well, a bit again when you want to update).
>
> To avoid what you just listed, that's why it's nice :). Why wouldn't I
> want to use the default tool chain.
>
It's just if the 15 minutes setup were the only issue, that's pretty
insignificant for any serious development. There are issues and
limitations with the D toolchain that are an order of magnitude (maybe
even *two* orders) more important/troublesome.
>> But having up-to-date tools with up-to-date functionality far
>> outweights in
>> benefits that small hassle.
>
> I do have up-to-date tools with with up-to-date functionality, it's just
> a different tool chain than GCC. Also, I would consider the LLVM tool
> chain more up-to-date than GCC.
>
>> Or are there downsides to that approach? Does using the GCC toolchain on
>> Mac OS X have shortcomings in functionality? The only reasons I can
>> think so far, is if you want to work with LLVM/LLDB specifically (not
>> merely because it's the compiler that ships with OSX, but because you
>> prefer LLDB over GDB). Or if you want to use OSX specific libraries in
>> your D application? (with might somewhat be tied to the OSX toolchain)
>
> As I said, I think that "sudo" is required to run GDB from Macports.
> That's quite annoying, if that's the case.
>
True, if that's the case.
> The GCC tool chain is missing a couple of features which the LLVM tool
> chain now has. These are mainly C/C++ and Objective-C/C++ features:
>
> * Blocks
> * Modules
> * A bunch of new Objective-C features
> * TLS
>
> The ones that affect D would be blocks and TLS.
>
> It should be possible to use a C function, from D, which uses blocks.
> One just have to figure out what the runtime representation of a block
> looks like.
>
> In Mac OS X 10.7 Apple introduce native support for TLS. The compiler
> and linker parts were only implemented in the LLVM tool chain. LDC can
> take advantage of this. GDC doesn't support native TLS on Mac OS X and,
> as far as I recall, it doesn't even support emulated TLS which DMD does.
>
> I might end up needing a C library that only compiles with the LLVM tool
> chain. Such as one which uses blocks.
>
> I also might want to use Mac OS X specific libraries. GUI applications
> are a good examples of this.
>
> Also, if D is ever going to work in iOS, I think the best bet is on LDC.
> Because it uses the same tool chain as Apple does.
>
Blocks is a C language extension by Apple. I suspect that Modules is the
same, although I couldn't google it quickly. Therefore this doesn't
really affect pure D development. Rather, it's significance would be the
same as of the use case of using Mac OS X specific libraries.
GDC does not supporting TLS (not even emulated TLS)?? That is a major
problem though!! :( It's more than major, it pretty much breaks D
development on Mac for anything other than just toy projects (with GDC
that is).
Well, I'm pretty much conviced anyways: better to support LLDB to have
the best debugging support for Mac OS X. I'm not too annoyed since I
planned to support LDC/LLDB anyways, as it seems a worthwhile
platform/compiler as much as GDC even for other platforms. But it would
still have been nice if GDC where to work properly on Mac.
--
Bruno Medeiros - Software Engineer
More information about the Digitalmars-d
mailing list