Commit r1066661: "Make it possible to run kdevelop in gdb again"
David Nolden
zwabel at googlemail.com
Tue Dec 29 00:26:12 UTC 2009
Am Dienstag 29 Dezember 2009 01:01:20 schrieb Andreas Pakulat:
> On 28.12.09 20:57:08, David Nolden wrote:
> > Am Montag 28 Dezember 2009 19:53:47 schrieb Andreas Pakulat:
> > > But then I can try to debug problems with the session-specific duchain
> > > directory.
> > >
> > > I'm starting to think that having the duchain in static code loaded
> > > before everything else is the real problem here. If that wasn't the
> > > case we wouldn't need this obscure env var and any extra process.
> >
> > That would also mean that one couldn't use "IndexedIdentifier",
> > "IndexedString", and all such duchain types statically, which would be a
> > significant limitation for such cosmetic reasons.
>
> Can you explain in more detail what limitation that is? I still can't
> see why we need all these things set up even before main() is entered,
> there's no code using any of these classes until at least the Core is
> created. So Core::initialize() should be early enough for the creation
> and initialization of the DUChain no?
In the duchain library itself, in language-plugins, etc., there is many places
where such objects are used as global statics, for example 'IndexedIdentifier
globalImportIdentifier("import{....}");' or similar. When these objects are
initialized, the duchain must already be initialized as well.
And it is very convenient code-wise to do this, as else, all these places
would require explicit initialization in an "init()" like fashion, which is
ugly, as it requires additional code to do the initialization, instead of just
relying on the standard c++ initialization of global statics.
Some of these objects have been turned into static functions, which partially
solves the problem, but sucks in its own right, because something as simple as
just reading out a simple integer is being turned into a function-call, which
may really hurt when used very frequently.
Well, I guess in future we can review this at some point to see whether we can
find a compromise between code-convenience and a better controlled
initialization order, but right now I think it is not worth the hassle.
Ah yeah, and about the debugging problem, we could also simply add a "--gdb"
option, that spawns a kdevelop instance with the correct environment variables
set in gdb.
Greetings, David
More information about the KDevelop-devel
mailing list