July 20, 2009
July 7, 2009
GDB Scripting : A short article for a internal magazine
I wrote a small article for a internal magazine and few of my friends wanted me to post it to this blog.
This is for people who are new to GDB and still exploring itz features. So if you’ve used GDB for more than few weeks please ignore and skip
GDB – Scripting
A good majority of novice programmers tend to use printf functions to trace function calls and to printout the debug data. This forces you to change the code and compile again and again. To eliminate these superfluous tasks from your day-to-day work, use GDB. The GDB has facilities for scripting and helps in saving plenty of your time.
Tracing Function Calls
If you want to know whether a function is called or not, create a break point and write a simple script.
<code>
#Set the breakpoint
(gdb) b mapi_sync
Breakpoint 1 at 0×7fffd75f36e2: file camel-mapi-folder.c, line 741
#Tell GDB what to do when the breakpoint is reached
(gdb) commands
Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just “end”.
> continue
> end
(gdb)
</code>
continue – Come out of break and continue
end – terminate command list
Run the program now. The GDB prints the function name when the breakpoint is hit and automatically continues running the program.
Breakpoint 1, mapi_sync (folder=0xc9c1a0, expunge=0, ex=0xf3a0c0) at camel-mapi-folder.c:741
741 CamelMapiStore *mapi_store = CAMEL_MAPI_STORE (folder->parent_store);
Using the GDB Scripts for Analyzing the Data
Suppose that you have a singly-linked list that has strings in it. At some point, you might want to know the contents of the list. To do this, use the GDB scripting instead of adding the debug statements in your code.
<code>
#Example for gslist traversal.
define p_gslist_str
set $list = ($arg0)
while ((GSList *)$list->next != 0)
p (char *)(GSList *)$list->data
set $list = (GSList *)$list->next
end
end
document p_gslist_str
p_gslist_str <list>: Dumps the strings in a GSList
end
</code>
Add the above snippet into a file and load it into the GDB as follows:
<code>
(gdb) source /home/jjohnny/scripts/gdb/gslist.gdb
</code>
Now, anywhere you want to take a look in the GSList, simply break and
<code>
(gdb) p_gslist_str server_uid_list
$17 = 0×7fffd81101b0 “7666BC1E000000015870BD1E00000001″
$18 = 0×7fffd810e330 “7666BC1E000000015970BD1E00000001″
$19 = 0×7fffd810cbe0 “7666BC1E000000015C70BD1E00000001″
</code>
Simple scripts thus can save you a lot of time from adding or removing the debugging statements from your code. Now go ahead and create a suite of scripts to aid the library you are writing.
More cool developer tricks later. Have fun !
— End —
Thanks to Radhika for editing the article.
Btw when is Archer branch (Python scripting) getting into GDB ? I’ve been using it a bit .
GDB
- Scripting
July 4, 2009
openSUSE 11.1 on PS3
Woohoo ! After a long delays and issues (in the last few days) I’ve managed to install openSUSE 11.1 in my PS3. Running a full blown desktop is very sluggish. Reminds me of my first computer (amdk6 500mhz). Some screenies :
Now onto get the Cell SDK running … Synergetic Processing Elements (SPE) here i come !
April 7, 2009
Makespace – Plugin for GNOME Evolution
I’ve written (incomplete) simple plugin for Evolution which provides a combo box + menu for switching folders. Now you can hide the sidebar. This really helps in freeing up some space in your screen and can have good vertical view layout. This would help computers with smaller screen size.
Screenshots :
Sidebar hidden. Small combo box in top left corner
Switching folders
To try out this plugin / For more information : http://www.johnnyjacob.org/makespace.html .
One other feature that I would like to have is simple folder bookmarks. Bookmarked folders would appear in the top of the menu (You don’t have to navigate all the way down in the menus)
Let me know what you think and if you would like to have any features put it down in the comments.
March 19, 2009
Evolution MAPI update release. (0.26.0.1)
Hello, I just released a update to evolution-mapi. 0.26.0.1 has fix for Bug 574784 without which the package is totally unusable.
Thanks !
February 8, 2009
1 reason to run GDB & 2 reasons to run emacs from source
CODE :
GDB : Compiling from Project Archer, you get to have python scripting inside gdb. This opens up numerous possibilities and nice tricks that helps you to debug faster. http://tromey.com/blog/?cat=17 has few example + demo scripts. Falling in love with these ..
EMACS : emacs 23 (in cvs) gives you MultiTTY Support , XFT Font rendering (and more). Looks better with XFT and multitty support rocks !
LIFE :
??
December 15, 2008
Evolution MAPI : Debut tarball release & RPM Repos are online
We have started the tarball releases for evolution-mapi. It’ll be in sync with GNOME release schedule. evolution-mapi-0.25.3 is available for download [0].
Thanks to Suman [1], openSUSE repositories [2] are back online.
Matthew has repositories for Fedora [3] [4]
—-
[0] http://ftp.gnome.org/pub/GNOME/sources/evolution-mapi/0.25/
[1] http://mail.gnome.org/archives/evolution-list/2008-December/msg00097.html
[2] http://download.opensuse.org/repositories/GNOME://Evolution://mapi/
[3] http://mbarnes.fedorapeople.org/mapi/
[4] http://mail.gnome.org/archives/evolution-list/2008-December/msg00086.html
November 24, 2008
Evolution MAPI : Contributions… Testing… Bugzilla …
Development is more active after our move to new svn ! Julien (of openchange.org) has patched evolution-mapi to be compatible with libmapi 0.8 .Patches are welcome
!
Some of the cool things with libmapi 0.8 is the possibility of having multiple exchange accounts (multiple sessions) in Evolution (Yep. you read that right! ). But they will hit the trunk little later .
Now more focus is on real world testing on servers other than few test servers we are running. What doesn’t work in different setups is something we would like to know and fix them all ! Thanks to those who have been reporting issues and TIA
NEWS :
+ evolution-mapi is proposed for GNOME 2.26. Yay !
+ we have a new product ‘evolution-mapi’ in GNOME bugzilla.
+ Wiki page is updated with information on building evolution-mapi .
November 19, 2008
Evolution MAPI : New SVN Repository
New SVN repo for evolution-mapi provider is created :
** svn://svn.gnome.org/svn/evolution-mapi **
This repo has :
1. MAPI Account setup e-plugin.
2. libexchangemapi – Backend code for talking to server using openchange’s libmapi.
3. Evolution Data Server backends for addressbook and calendar.
4. Camel provider (mails).
More information on building evolution-mapi is available here .
We will be creating a new bugzilla component in bugzilla.gnome.org for evolution-mapi.
[ Update Nov 22 : Please report bugs under 'evolution-mapi' product in GNOME Bugzilla. ]
The EXCHANGE_MAPI_BRANCH[1][2] is closed.
Builds (RPMs) will resume shortly.
[1] svn://svn.gnome.org/svn/evolution-data-server/branches/EXCHANGE_MAPI_BRANCH
[2] svn://svn.gnome.org/svn/evolution/branches/EXCHANGE_MAPI_BRANCH
July 11, 2008
Evolution Exchange 2007 (MAPI) Provider : Changes in schedule and more.
Code :
We have moved away from libmapi 0.7 to libmapi trunk (0.8 development) , so we can take advantage of the new APIs.
We will be constantly updating our code base to libmapi trunk.
http://www.go-evolution.org/MAPIProvider#Feature_Status
Currently :
Suman is busy in integrating meetings into evolution. (few more tasks left)
I’m currently working on finishing (completing) off the basic features in mailer and will move to optimizing the sync & more.
Schedules :
Sadly, we won’t be able to make it to Evolution 2.24 as we are late (details here).
Meanwhile we will continue to provide pluggable packages and this will be available as a pluggable provider. 2.26 will have this.
Licensing :
Yay ! Very exciting day. Evolution licence change was announced by Michael Meeks in my talk this morning (Exchange, MAPI and Evolution) . Announce mail here!! .
Update 1 : GUADEC Talk available here
July 5, 2008
Johnny goes to GUADEC 2008, Istanbul, Turkey.
A small talk on Friday morning regarding the new Evolution MAPI provider for Exchange 2007 connectivity.
We (srini & chen) will be reaching Istanbul on sunday evening.
see ya there !
June 11, 2008
EPlugin Python loader in trunk
Committed *initial* python eplugin loader for Evolution. Please feel free to fix it
.
Bindings yet to be done (without which it is not useful) . I’m looking (doing some initial work) at pygtk-codegen for generating the required bindings.
Would be happy get a extra hand here








