[Nemiver-list] What's happening in Nemiver land



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]