New LLVM Debugger Subproject Already Faster Than GDB
kthreadd writes "The LLVM project is now working on a debugger called LLDB that's already faster than GDB and could be a possible alternative in the future for C, C++, and Objective-C developers. With the ongoing success of Clang and other LLVM subprojects, are the days of GNU as the mainstream free and open development toolchain passé?" LLVM stands for Low Level Virtual Machine; Wikipedia as usual has a good explanation of the parent project.
So maybe a better way of putting it is "not yet as slow"
If it wasn't for this slashvertisement, I wouldn't have heard of it.
Personally I like my toolchain to have some heritage and age, so at the moment GNU is a safe choice for me.
These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
is the days of GNU as the mainstream free and open development toolchain passé?
Does I not understand some grammatical concept here?
that thinks the image tagged on this story looks like some horribly malformed cartoon penis?
It's possible that LLVM-based tools may be approaching the point where they could supplant GCC, but this project doesn't seem all that important to that goal. There are definitely niches where a fast debugger matters, but that's exactly what they are--niches. A faster debugger is very, very low on the list of things that would help you compete with the GCC toolchain.
Things like supporting variadic templates, having a wider array of backends, and the like are far more important if you want to displace GCC--the backends, in particular, make clang a total non-starter for many embedded developers.
That's not to say the fast debugger isn't a good development--for things that need it, it's very valuable indeed. But the attempted spin of the blurb seems to miss the point.
rage, rage against the dying of the light
I like LLVM, but I love TenDRA.
Have you heard about SoylentNews?
"s the days of GNU as the mainstream free and open development toolchain passé?"
I suspect that that will depend, in part, on how LLVM ends up being used. Since it is under a BSD-esque license, LLVM itself is definitely a candidate for being the "mainstream free and open development toolchain"; but only if the majority of real-world support scenarios don't involve proprietary actors taking advantage of that fact. In that case, it'll pretty much just end up being the core of a large number of binary, proprietary, BSPs and toolchains.
Given the good things that are said about its technical characteristics, I would hope that that doesn't happen; but the potential exists.
With the ongoing success of Clang and other LLVM subprojects is the days of GNU as the mainstream free and open development toolchain passé?
No.
Save your wrists today - switch to Dvorak
Does it have to refresh constantly and run at 60fps?
The way I use debugger, most of the time it waits for input from me. My biggest gripe with gdb is how awkward to use it is and how crappy all visual overlays for gdb are, bot how fast it is.
We discussed phoronix findings already, LLVM can be useful in some situations, GCC in many others. http://www.phoronix.com/scan.php?page=article&item=gcc_llvm_clang&num=1
The debugger speed is nice to have but definitely a secondary factor when choosing compilers. Mod summary -1 flamebait.
Using it already thanks.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
For simple manual stepping, etc. debugger speed is probably not that important. Have you ever tried to really use watchpoints? Given up after your program slowed to a crawl?
We had a debugger that could run many watchpoints at almost full program speed some time ago, see http://www.netilium.org/~mad/dtj/DTJ/DTJK07/ for details. The key point is that Parasight was fast enough to make tools like this useable.
Fast? Huh? In the absence of downright atrocious performance, the most important thing in a debugger really is how well you can inspect, analyze, and debug code with it.
You want fast problem resolution, not fast runtime.
There are 2 main reasons (at least from the way LLDB appears to be faster than gdb):
Resource constrained systems like phones & other embedded devices where debugging on device is made more difficult (then you have to deal with gdbserver & the awkward mess that can be).
Extremely large projects where you have lots of symbols.
I doubt conditional breakpoints are helped here unless LLDB does this in a different manner somehow.
Seriously? The mere existence of a debugger project for LLVM, reportedly faster (whatever does that mean for a debugger?) than gdb, leads to the question of GCC as a project has it's days numbered?
1. LLDB is AFAIU only for MacOSx yet, and x86-(64). Then what about all other combinations of platforms that make up ~99% of install base (yes, counting embedded) where GCC reigns supreme?
2. It's a friggin toddler! Doesn't mean it won't grow up into something fantastic, doesn't mean it will!
3. PERFORMANCE is the key sales-point? What about the multi-thread-debugging everyone else seems to care about?
Don't get me wrong. Noone would like to see competition in the open-source-sphere than I do, especially for such entrenched segments as GCC. But LLDB as of yet doesn't really affect things at all IMO.
...when there's printf?
[quote]With the ongoing success of Clang and other LLVM subprojects is the days of GNU as the mainstream free and open development toolchain passé?[/quote]
"The days" cannot be "passé". The days might be passed. GNU might be passé.
(and while I've let my inner pedant off its leash, I should point out that it should be "ARE the days", not "is the days")
Is it so hard to expect competence in English from the summary authors? I guess so.
the LLVM fix: a BSD style, fully free, as in "free" (not as in "beer" or any other not-quite-free internet-libertarian-testament-to-education-failure construct) not encumbered in any way license, the success of which is evidenced by substantial corporate contribution to the LLVM project from several different companies, and
the LLVM fix: a modular architecture, with a well defined Intermediate Representation which can be used between arbitrary compiler stages, and a project principle that each modular component should be implemented a library which an be linked into arbitrary higher level programs, so that compiler components can be shared with the debugger and the IDE, or example, the success of which is evidenced by XCode 4, and the reuse of LLVM components in the LLDB Debugger Project, and in other ways.
Making a faster compiler which emits code with superior optimization (e.g. runs faster on given target hardware) than gcc just gives The LLVM Project bragging rights, which is a "nice to have" but probably not really an essential technical feature (it may be an essential marketing feature for the project, though).
If you mod me down, I shall become more powerful than you could possibly imagine.
LLDB won't kill the GNU toolchain. What would kill GNU toolchain is the FSF's crazy meddling:
* Why does the GCC steering committee has to ask FSF for approval of technical decisions like switching to C++, or creating the plugin system? Especially as the FSF's resistance to frontend-backend separation hampered Free software, and led to LLVM in the first place.
* Why does anyone trying to contribute to GCC have to sign copyright assignment to FSF, when even large projects like Linux (or more comparably LLVM) avoid this? Note that it's not nearly as simple as downloading a form and signing it. One has to fill a form in order to ask to be sent a copyright assignment form in the mail from the FSF.
* Why after creating all these troubles for contributers, did the FSF avoid suing Sun for GCCfss? Apparently in spite of all the rhetoric, large companies can infringe at will.
As an external observer of GCC, I don't think it can really recover until the FSF lets the leash go and let the steering committee manage the project.
Free. Not encumbered in any way. No bullshit pseudo libertarian crap about distinctions between free beer and speech. The entire LLVM project is completely bloody f'ing free . It's a damn sight more free than the almost but not quite really free gcc.
LLVM is an entirely free and open source code to a complete compiler, several front ends, several back ends, optimization code. Better than that, it's all implemented as libraries you can easily compile in and link with your code. And a standardized Intermediate Representation. And today they added a free debugger under the same entirely free and entirely open terms. For free.
Go troll elsewhere, GPL freak.
If you mod me down, I shall become more powerful than you could possibly imagine.
FreeBSD is currently moving (slowly) towards Clang/LLVM with their ClangBSD subproject. They've just imported clang into the base system of FreeBSD (-CURRENT), and clangbsd is on its way.
cpghost at Cordula's Web.
Money, MY FREEDOM, and compatibility with gcc-only code are the leading candidates. Interestingly, LLVM solves all three of those issues for most people, plus it has the performance advantage.
There are still problems around the "freedom" part, as LLVM is using BSD-style licensing, authorising proprietary forks. Whereas GCC uses GPL licensing.
Thus there exists a risk that some innovation gets lost in proprietary forks where your freedom to hack won't be preserved.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
GCC's days really are numbered, and this is one of the last pieces of the puzzle.
No, GCC's days are not numbered. At least not as long as LLVM only runs on/targets for/and compiles, the vast amount of supported platforms, processors, operating systems and languages that GCC supports, in a completely free(dom) manner.
For now, LLVM seems to be mainly x86 focused, whereas GCC supports lots of architectures. GCC can run on systems even such as MS-DOS or even weirder, etc.
LLVM is BSD licensed, which means that in the embed world, bad thing can happen (small embed companies releasing back-end targeting their chip only as proprietary blobs running on older versions of windows)
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Anyway, other major BSD-like projects don't suffer from private forks, and there's no reason to think LLVM will either.
That's kind of funny. I have a dark suspicion that Apple created LLVM *precisely* so that they could maintain a private fork concerning some premium technologies (OpenCL, GCD, H.264 all come to mind). Generally, however, maintaining a private fork is a PITA so it happens far less than GPL bigots promulgate. (Non bigots don't promulgate. That's how you tell.)
Why do you think Intel bought Kuck and Associates? To make it optimize their own code more better, or optimize someone else's code less better? KCC before it was Intelified used to really kick ass, *especially* on AMD.
Unlike GCC, outsiders can successfully provide patches and bug reports to LLVM. The process isn't so incredibly oppressive that people just don't bother.
Well, the last time I reported a edge case error in template support for GCC, it was fixed within *two days* of receiving my report. I guess the response time depends on the nature of what you report. But you have a point. A comparable edge case bug that I reported on the R users mailing list was fixed in 15 minutes by one of the core developers, so GCC does kind of suck. There was a bug I used to follow on Ubuntu that was still in triage three years after filing and had hundreds of people following, as resolution slipped from one release to the next. It's hard to speak in generalities about these things.
Finally, to all those people who think that only the generated code speed matters, grab a brain! The rate limiting factor on software quality and complexity is the tooling ecology. For example, suppose some day Eclipse CDT adopts the LLVM C++ parser and error message components. If this advantage were to enable me to write more powerful algorithms, *even if* the generated code under LLVM was 10% slower than some other compiler, my superior solution would still kick ass.
If the tooling advantage of LLVM is *already* making it more productive to add complex optimization passes to LLVM, somehow I doubt that 10% penalty continues to exist much longer.
The most important feature in a compiler is making the software developer smarter and more efficient.
That was a nice summary of the situation.
It's funny how little I care what goes on behind closed binaries. OTOH, having GPL poison pills floating around in what started out as a BSD project is a form of spam that really irritates me, because their existence is hard to ignore. The guts of binary blobs don't pollute your result sets on Google code search. If Google had the perfect algorithm to guarantee that when I search for information about a BSD project, the existence of GPL poison pills forked off that code base *never comes to my attention* (this includes filtering discussion threads debating the matter) then I would have no objection to the GPL punk behaving like a jack-off. It's his life.
Sometimes the GPL people sound like they've spent far too long listening to Tom Wait's "What's he building in there?" Some of my systems are binary-blob free, others aren't. I know my options and I'm happy with my choices. Mother nature didn't publish her source code for the first three billion years. Suddenly the word "freedom" is polymorphic in a strange new way. Hijacking what came before has *always* been a part of the GPL Kool-Aid. Now that we've forcefully opened up mother nature's source code, we discover that hijacking has been part of the Kook-Aid since forever. It's a strange world.
For me, it's the immaturity of Clang/LLVM that makes the project so damn impressive, like a three year old playing Bach's cello suites.
LLVM Project Blog: Clang++ Builds Boost!
I want a completely submersive experience when debugging. Tie llvm/lldb into the Quake engine, for example, and visualize objects, data, io, relationships. Place all debugger controls in the 3d realm, for example slider on a wall for off->slow->faster->fastest code execution, objects colored by type, with hue changes for derived classes, zoom in and out on objects, watch temporary objects be created from across the room. Memory/variable watch on the walls. And then someone can figure out how to put the UML stuff in, too. And 3d profiling visuals, maybe off in another room where I can have a setup that's optimized for visualizing profiling information.
Before you start yelling OMG FASTER WHO CARES??? you might want to read the fine article:
"""
WHY A NEW DEBUGGER?
In order to achieve our goals we decided to start with a fresh architecture that would support modern multi-threaded programs, handle debugging symbols in an efficient manner, use compiler based code knowledge and have plug-in support for functionality and extensions. Additionally we want the debugger capabilities to be available to other analysis tools, be they scripts or compiled programs, without requiring them to be GPL.
"""
This is about better code analysis and integration, not faster debugging.