[Nemiver-list] What's happening in Nemiver land
- From: Dodji Seketeli <dodji domain hid>
- To: nemiver-list domain hid
- Subject: [Nemiver-list] What's happening in Nemiver land
- Date: Mon, 07 Jul 2008 16:35:04 +0200
Hello,
I thought I'd just drop a (not so) little email to tell you guys about
what we've been up to with Nemiver after the 0.5.4 release.
Conditional breakpoints
=======================
So we went on an added support for conditional breakpoints. This landed
in svn trunk and has been working for me so far.
Setting a conditional breakpoint is not more difficult than setting a
normal breakpoint. Just make the breakpoint setting dialog appear like
before (e.g, by typing <control>b). At the bottom of that good old
dialog you know have a text entry field in which you can type the
condition upon which the program should stop at that breakpoint.
In the "breakpoints view" that is in the status notebook at the bottom
of the debugging perspective, for each breakpoint that has been set, you
can see if the breakpoint has a condition, which condition it is, and
how many times the breakpoint has been hit.
The changeset of the commit can be browsed at
http://svn.gnome.org/viewvc/nemiver?view=revision&revision=873
Fix #515525 – Arrow keys don't work to navigate through source file
==================================================================
This was an annoying bug that was preventing us from navigating inside
the source file using the arrow keys. This one is now fixed. Yay.
The commit changeset can be browsed at
http://svn.gnome.org/viewvc/nemiver?view=revision&revision=874
Big performance improvement
===========================
Jonner reported that Nemiver was very slow when stepping in Webkit code.
I could not reproduce this behaviour while debugging GCC code for
instance. So I decided to bite the bullet and grabbed Webkit source code
from git, compiled it and started to debug the code of GtkLauncher
program. Stepping was slow, indeed.
Some profiling later I started to understand what was going on.
Each time the inferior program (the program being debugged) stops,
several independent graphical components of Nemiver query the underlying
debugging engine (namely GDB). Among those graphical components, there
are things like the CallStack widget and the LocalVariableInspector
widget. When you are debugging big C++ programs, the data retrieved by
those widgets can become huge. Imagine, each variable that is an
instance of a class can be deeply nested. I mean the class instance can
have members, each member itself can have multiple members, and this can
go very far.
So, each time you would hit the "next" button to step over the next
instruction, a lots of query were issued, triggering a data storm
between Nemiver and GDB. On reasonable sized programs that was not an
issue since data production on GDB end and parsing on Nemiver end were
fast enough. But as the inferior grows, this can become an issue.
What we did was to implement a first level of lazy evaluation. That
means only _VISIBLE_ status widgets would now issue commands to GDB,
upon inferior stop. If a widget is not visible (i.e hidden because it's
not in the currently visible tab of the status notebook) it won't issue
any command to GDB. It is only when the user will switch to the notebook
tab containing the widget that the widget will try to update itself, if
needed.
This rather simple optimisation turned out to speed up things a lot.
Debugging Webkit is now back to something normal in Nemiver land.
The commit ChangeLog can be browsed at
http://svn.gnome.org/viewvc/nemiver?view=revision&revision=882
Arbitrary function calls
========================
Sometimes you want to be able to call functions in the inferior program.
For instance, there can be a debug function in the inferior that dumps
some complex state, and at some point and you might want to call it.
It's now possible to do that in nemiver. Just go into debug -> call a
function - or just hit <control>E. You'll be presented a dialog where
you can type in your function call expression, e.g:
dump_foo_state (foo, bar).
The commit ChangeLog can be browsed at
http://svn.gnome.org/viewvc/nemiver?view=revision&revision=883
Translations
============
Japanese and Spanish translations were updated.
Many thanks for reading so far :-)
Cheers,
Dodji.
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]