<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7742435659113733626</id><updated>2011-08-16T21:02:18.162-06:00</updated><title type='text'>Nokia Carbide.c++ on Eclipse</title><subtitle type='html'>Building Nokia's C++ tools on Eclipse</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-5123260458671633698</id><published>2011-05-16T13:01:00.000-06:00</published><updated>2011-05-16T13:01:21.515-06:00</updated><title type='text'>Update on Carbide, EDC, Symbian, Nokia</title><content type='html'>Time for an update on the state of Carbide, the Eclipse Debugger for C/C++ (EDC), Symbian, and Nokia. As usual all comments and analysis are my own.&lt;br /&gt;&lt;br /&gt;We finally shipped &lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html"&gt;Carbide 3.2&lt;/a&gt; to the public! This is the first publicly available 3.x version of Carbide and the first new version seen outside of Nokia in over a year. It includes support for a new build system, a brand new on-device debugger built on top of EDC, and lots of usability improvements. The delay was a result of one of the many iterations of Nokia's strategy over the past few years: for much of 2010 and until February 11th of 2011 we were telling developers that our mobile platform was the Qt app framework, not Symbian. The Qt folks were busy building their own IDE (Qt Creator) and so it was thought that developers would be confused if they had Carbide available as well. So Carbide was designated a "platform tool" only for use by Nokia's thousands of internal developers.&lt;br /&gt;&lt;br /&gt;Then on February 11th our new CEO announced that Nokia would be using Microsoft's Windows Phone 7 software in the future and Symbian would be phased out over the next couple years. So our team has ended up in a &lt;a href="http://en.wikipedia.org/wiki/Wallace_Hartley"&gt;strange position&lt;/a&gt;: we need to keep Carbide up to a high standard to support Nokia's continuing Symbian efforts but we know the plug will be pulled at some point, probably within the next year. Nokia has built in some flexibility for it's Symbian roadmap and arranged a soft landing by working out a deal to &lt;a href="http://press.nokia.com/2011/04/27/nokia-announces-plans-to-transfer-symbian-software-activities-to-accenture-accenture-to-provide-future-smartphone-ecosystem-services-to-nokia/"&gt;transfer 3000 people to Accenture&lt;/a&gt; at the end of this year. Accenture will then contract us back to Nokia to do the remaining Symbian work.&lt;br /&gt;&lt;br /&gt;Our team's chief contribution to the Eclipse community over the past 24 months has been the Eclipse Debugger for C/C++ (EDC), part of the CDT project. Faced with the need for a new C/C++ debugger for Carbide and unhappy with any of the available options we designed and built one from the ground up. But the ground was already pretty rich: we leveraged all the work done in CDT's Debug Services Framework (DSF), used the CDT language parser for expression support, and relied on the Target Communications Framework (TCF) for low level debug services.&lt;br /&gt;&lt;br /&gt;The first version of EDC shipped with Helios but it was pretty raw as we hadn't yet shipped a Carbide product using it. Indigo EDC is a big improvement in stability, performance, and feature set and we got to fix a number of things we didn't get right on the first attempt. The two reference debuggers provided with EDC (Windows &amp;amp; Linux) still aren't near production quality but are great for introduction and testing and provide a good example of how to build a debugger around EDC.&lt;br /&gt;&lt;br /&gt;As we developed EDC we found other tools people interested in the idea and it reflects valuable contributions from the CDT community. As Carbide winds down I hope it continues to offer some value to anyone moving beyond their legacy debugger. I'd like to continue improving it and the rest of CDT but that awaits a volatile future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-5123260458671633698?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/5123260458671633698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=5123260458671633698' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5123260458671633698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5123260458671633698'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2011/05/update-on-carbide-edc-symbian-nokia.html' title='Update on Carbide, EDC, Symbian, Nokia'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-8199311871809575743</id><published>2011-03-17T16:04:00.002-06:00</published><updated>2011-03-18T14:00:31.875-06:00</updated><title type='text'>Copying Memory</title><content type='html'>I've been starting to clear some usability issues out of our backlog  and ran into one that seemed simple enough but eventually required a  little more thought and attention.&lt;br /&gt;&lt;br /&gt;When debugging  native code it's common to want to inspect memory so the Eclipse debug  platform offers a standard Memory view. The view can host a number of  memory renderings, each offering a different way of viewing a chunk of  memory.&lt;br /&gt;&lt;br /&gt;The "traditional" memory rendering is popular  with C/C++ developers because it works much like the memory views in  other debuggers and shows a range of memory in both binary and text  formats.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-TPpGSg6CRwU/TYJ8iii4CCI/AAAAAAAAAho/risA5hcU3jg/s1600/eclipse_trad.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="105" src="https://lh5.googleusercontent.com/-TPpGSg6CRwU/TYJ8iii4CCI/AAAAAAAAAho/risA5hcU3jg/s400/eclipse_trad.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;"Traditional" memory rendering from CDT&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-Zz80nwQGlXI/TYO4fPVJLkI/AAAAAAAAAh4/vpCmL5zwOLc/s1600/Screen+shot+2011-03-18+at+2.53.53+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="115" src="https://lh5.googleusercontent.com/-Zz80nwQGlXI/TYO4fPVJLkI/AAAAAAAAAh4/vpCmL5zwOLc/s400/Screen+shot+2011-03-18+at+2.53.53+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Memory View in Xcode 4&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/--uUMqcy-5vg/TYJ8j6GdOsI/AAAAAAAAAhs/bnLbIoeVFWM/s1600/vs2008_mem.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="127" src="https://lh3.googleusercontent.com/--uUMqcy-5vg/TYJ8j6GdOsI/AAAAAAAAAhs/bnLbIoeVFWM/s400/vs2008_mem.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Memory  view from Visual Studio 2008&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-RCOfCE7NC8s/TYJ8h9SvZ5I/AAAAAAAAAhk/4pKjB3MqEXE/s1600/cw_mem.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="144" src="https://lh5.googleusercontent.com/-RCOfCE7NC8s/TYJ8h9SvZ5I/AAAAAAAAAhk/4pKjB3MqEXE/s400/cw_mem.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Memory window from CodeWarrior in  2001&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;Our developer (I'll call him Tom because that's his real name) wanted to do something that seemed pretty simple: select a hex value, copy it to the clipboard, and then paste it into a variable in the Variables view. But  the global "Copy" command wasn't hooked up to the memory rendering so  it did nothing. Tom then discovered "Copy to Clipboard" in the context  menu.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-zT2FGNw3F14/TYJ_4lxw4RI/AAAAAAAAAh0/UdBqX3AWD6Q/s1600/menu01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-zT2FGNw3F14/TYJ_4lxw4RI/AAAAAAAAAh0/UdBqX3AWD6Q/s1600/menu01.png" /&gt;&lt;/a&gt;&lt;/div&gt;But the "Copy to Clipboard" command copied all of the selected  data from the rendering: addresses, binary, and text to the clipboard so it looked like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x7FFF5FBFED20&amp;nbsp; 74736574 00676E69 996E019D 3CBE8497 5FBFED40&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; testing...n...¾&amp;lt;@í¿_&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tom had to paste this into a text editor, then select just the  binary/hex part, and finally had something to paste to set the value of  his variable. This sort of thing delights some people because they find a  work-around and then have another story to inflict on their colleagues,  but Tom had real work to do, expected better, and logged a bug. Our  team worked on other stuff that seemed more important until last week  when I went back to take another look.&lt;br /&gt;&lt;br /&gt;First I looked  to see if the rendering's support for "Copy" could just do the right  thing by grabbing the address, the binary data, or the text based on  which part had been clicked in last. While that would work in the narrow  case it wouldn't leave any indication of what it might do if you have  forgotten which area you clicked in last, and the ability to copy all  three (addresses, binary, text) would have been lost.&lt;br /&gt;&lt;br /&gt;There  needed to be a more explicit way to say which portion of the data you  wanted to copy. So I changed the context menu to provide all four  options.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-Eg9Z-F3_3fI/TYJ_06BNidI/AAAAAAAAAhw/8qyuFpr6Gdg/s1600/menu02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="134" src="https://lh3.googleusercontent.com/-Eg9Z-F3_3fI/TYJ_06BNidI/AAAAAAAAAhw/8qyuFpr6Gdg/s320/menu02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This would make life better for Tom but still  wouldn't fix the "select the hex data and hit control/command - c"  scenario. So it also keeps track of one choice as the default option  that is used when fired by the global "Copy" command, which is now  hooked up to the rendering. Tom will have to select "Binary" once and  then Copy will work the way he expected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-8199311871809575743?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/8199311871809575743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=8199311871809575743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/8199311871809575743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/8199311871809575743'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2011/03/copying-memory.html' title='Copying Memory'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-TPpGSg6CRwU/TYJ8iii4CCI/AAAAAAAAAho/risA5hcU3jg/s72-c/eclipse_trad.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-7576652466512576185</id><published>2010-11-11T22:42:00.000-06:00</published><updated>2010-11-11T22:42:31.479-06:00</updated><title type='text'>CDT-EDC Multi Context Debugging</title><content type='html'>If you are ever at a gathering of the Eclipse CDT community and the conversation starts to drag just casually ask about support for debugging multiple processes, cores, or contexts at the same time. You'll hear about a lot of important interrelated issues and that the committers have been chipping away at them for some time.&lt;br /&gt;&lt;br /&gt;One of the nice things about creating the EDC C/C++ debugger in CDT was the opportunity to include ground up support for debugging many contexts at once. But while that's fine under the hood we immediately ran into an important usability issue in the Debug view.&lt;br /&gt;&lt;br /&gt;When you launch a debug session you start with a launch configuration that tells the debugger what to do and you end up with a Launch in the Debug View that shows the result. The Launch is usually named after the launch configuration that created it:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8MzFF6b5axY/TNxWAGfoIPI/AAAAAAAAAXA/OpuDAiBrVIA/s1600/Clip+1+%25282%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_8MzFF6b5axY/TNxWAGfoIPI/AAAAAAAAAXA/OpuDAiBrVIA/s1600/Clip+1+%25282%2529.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When you want to debug something else you can use another launch configuration that will create another Launch in the Debug View:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_8MzFF6b5axY/TNxXCyFHHgI/AAAAAAAAAXI/j0q7sS2jTMU/s1600/Clip+2x.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_8MzFF6b5axY/TNxXCyFHHgI/AAAAAAAAAXI/j0q7sS2jTMU/s1600/Clip+2x.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;People find this confusing if both the things you are debugging are running in the same target environment. They expect them to be grouped together in the Debug view and they expect the Launch at the root of the view to represent the overall environment (phone, PC, multi-core system etc.)&lt;br /&gt;&lt;br /&gt;The EDC debugger deals with this by letting new launches join existing ones if they are part of the same target environment. For example if you debug a Windows app (Simple.exe) you will get a new debug session and Launch in the Debug View.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8MzFF6b5axY/TNxUqFFUDUI/AAAAAAAAAW8/E4TkcniMGh8/s1600/Clip+1+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_8MzFF6b5axY/TNxUqFFUDUI/AAAAAAAAAW8/E4TkcniMGh8/s1600/Clip+1+%25281%2529.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Debug a second Windows app (BlackFlag.exe) and it will join the existing one:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8MzFF6b5axY/TNxTkZFchWI/AAAAAAAAAWw/_coPtIMLbQ4/s1600/Clip+3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_8MzFF6b5axY/TNxTkZFchWI/AAAAAAAAAWw/_coPtIMLbQ4/s1600/Clip+3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;EDC uses a description and image of the target environment provided by the debugger implementation. In that case it was the Windows machine name. In this one it's the name of my phone:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_8MzFF6b5axY/TNxbRr-5FSI/AAAAAAAAAXM/xygWPwHeyEM/s1600/kenN8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_8MzFF6b5axY/TNxbRr-5FSI/AAAAAAAAAXM/xygWPwHeyEM/s1600/kenN8.png" /&gt;&lt;/a&gt;&lt;/div&gt;Of course there are lots of other issues related to multi context debugging. To see how the CDT community is addressing these you can follow along with the &lt;a href="http://wiki.eclipse.org/CDT/MultiCoreDebugWorkingGroup"&gt;CDT multi-core working group&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-7576652466512576185?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/7576652466512576185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=7576652466512576185' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/7576652466512576185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/7576652466512576185'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/11/cdt-edc-multi-context-debugging.html' title='CDT-EDC Multi Context Debugging'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8MzFF6b5axY/TNxWAGfoIPI/AAAAAAAAAXA/OpuDAiBrVIA/s72-c/Clip+1+%25282%2529.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-2612581493111802562</id><published>2010-09-07T15:45:00.001-06:00</published><updated>2010-09-07T17:59:15.798-06:00</updated><title type='text'>CDT-EDC Where is the Exit?</title><content type='html'>Our team is working on our next generation of C/C++ development tools for Symbian, Carbide 3.0 (C3). These build on the Eclipse Debugger for C/C++ (EDC) that's part of the CDT project. Our test team reported a bug that raises an interesting question for developers: do you want the debugger to show you what's really happening even if it seems a bit confusing?&lt;br /&gt;&lt;br /&gt;Here is the situation: you are debugging a C++ function that looks something like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8MzFF6b5axY/TIaxvBdAOGI/AAAAAAAAATQ/imYaEgzJLsQ/s1600/Clip+1+%285%29.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_8MzFF6b5axY/TIaxvBdAOGI/AAAAAAAAATQ/imYaEgzJLsQ/s320/Clip+1+%285%29.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Say you are stepping through this function in the debugger and you start at line 31. "value" happens to be 200 so the condition on line 31 fails. You step over and end up on line 36. Step over again to go to line 37. So far everything looks OK. Now you step again from line 37 and you might reasonably expect to exit the function. Instead you end up on line 34! This looks like a heinous bug but is a case of the compiler reorganizing things even in a normal debug build with optimizations off.&lt;br /&gt;&lt;br /&gt;The compiler has built this function by putting all of the return/exit code in one place, in the middle of the function at line 34. At the end of the function, at line 37, instead of generating the exit stuff again it simply jumps to the address at line 34 and exits there. It dutifully and accurately records this bit of slight-of-hand into the symbol information and the EDC debugger shows you on line 34.&lt;br /&gt;&lt;br /&gt;Should the EDC debugger try to detect this just to avoid confusion? Another perspective is that the debugger should show you exactly what's happening even if the result is sometimes puzzling. What do you think the EDC debugger should do?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-2612581493111802562?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/2612581493111802562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=2612581493111802562' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2612581493111802562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2612581493111802562'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/09/cdt-edc-where-is-exit.html' title='CDT-EDC Where is the Exit?'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8MzFF6b5axY/TIaxvBdAOGI/AAAAAAAAATQ/imYaEgzJLsQ/s72-c/Clip+1+%285%29.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-854691018416400672</id><published>2010-06-17T22:16:00.000-06:00</published><updated>2010-06-17T22:16:24.334-06:00</updated><title type='text'>Giant Symbols</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8MzFF6b5axY/TBrt621BiGI/AAAAAAAAATA/1OGRaKrH3SY/s1600/C3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://1.bp.blogspot.com/_8MzFF6b5axY/TBrt621BiGI/AAAAAAAAATA/1OGRaKrH3SY/s200/C3.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The Carbide team here at Nokia has spent the last couple months working on getting the Carbide 3.0 (rebranded C3) beta out to developers, doing an update to the current tools (Carbide 2.6) and wrapping up our contributions to the Eclipse Helios release, mostly in the C/C++ Tools project (CDT).&lt;br /&gt;&lt;br /&gt;In the midst of all that I was asked to help a developer who is porting a very large productivity app to Symbian. His problem involved using the debugger in Carbide 2.x and the size of the symbol files generated for his application. A symbol file is generated by the build tools and contains the information used by the debugger to make sense of your source code, variables, and most of the other stuff you see in a debug session.&lt;br /&gt;&lt;br /&gt;With all the apps developed at Nokia we've seen a lot of large symbol files but this one was nearly a 1GB, almost double the size of our largest sample. Our current tools (Carbide 2.x) crashed when trying to open the big symbol file and couldn't easily be fixed to handle something that size.&lt;br /&gt;&lt;br /&gt;This is one of the use cases we had in mind when we developed the new debugger in C3, the Eclipse Debugger for C/C++ (EDC), part of the Eclipse CDT project. So we ran our new big symbol file sample through the EDC symbol reader unit tests and everything worked quickly and smoothly. I gave the developer a beta build of C3 and once we worked through some setup issues on Windows 7 he was able to debug the app with the giant symbol file and see all the debug info.&lt;br /&gt;&lt;br /&gt;Then he says "that's the symbol file for just one of our dlls, all together we actually have about 14GB of symbol data." So I think we have now put the EDC debugger in C3 through a least one kind of worst case scenario.&lt;br /&gt;&lt;br /&gt;While all this was going on someone asked why the symbol files were so large to begin with. This big productivity app has been ported to lots of platforms with different tool chains and they never ended up creating such a large amount of symbol data. After some investigation they discovered a build flag called "remove_unneeded_entries" that, when enabled, dramatically reduces the size of the symbol data. We still have more testing to do but so far it looks like it really helps debugger performance with no loss of useful data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-854691018416400672?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/854691018416400672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=854691018416400672' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/854691018416400672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/854691018416400672'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/06/giant-symbols.html' title='Giant Symbols'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8MzFF6b5axY/TBrt621BiGI/AAAAAAAAATA/1OGRaKrH3SY/s72-c/C3.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-7560903840662316881</id><published>2010-03-30T16:24:00.000-06:00</published><updated>2010-03-30T16:24:44.048-06:00</updated><title type='text'>Carbide, CDT &amp; EDC at EclipseCon 2010</title><content type='html'>Had a great time at &lt;a href="http://www.eclipsecon.org/2010/"&gt;EclipseCon&lt;/a&gt; in Santa Clara last week. Some highlights:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8MzFF6b5axY/S7J5tmPezYI/AAAAAAAAAS4/RnHTGELfpdQ/s1600/snacks.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="174" src="http://1.bp.blogspot.com/_8MzFF6b5axY/S7J5tmPezYI/AAAAAAAAAS4/RnHTGELfpdQ/s200/snacks.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Face time with our colleagues from Nokia, the Symbian Foundation, Eclipse and CDT communities. Ronnie King, Warren Paul, and I came from the Austin office and had a great time catching up with people we usually don't get to see in person very often. I &lt;a href="http://nokiacarbideoneclipse.blogspot.com/2009/03/not-going-to-eclipsecon.html"&gt;missed EclipseCon last year&lt;/a&gt; but I heard attendance was up and organizations were able to send more people this time.&lt;br /&gt;&lt;br /&gt;I really liked the session format: the reduced times  seemed to really focus the presentations and kept a wide variety of  material flowing throughout the day. I know the &lt;a href="http://www.eclipsecon.org/2010/sessions?id=1201"&gt;CDT session&lt;/a&gt;  Doug and I did seemed to fly by quickly.&lt;br /&gt;&lt;br /&gt;Had a great response to the new EDC (Eclipse Debugger for C/C++) that will be in Carbide 3.0 and our team is contributing to CDT 7.0. People liked the overall concept, features, and extensibility and I think we'll soon start seeing more contributions from the community.&lt;br /&gt;&lt;br /&gt;Lots of discussions about usability and performance, both very important to us for Carbide. There is new work going on in the Eclipse &amp;amp; CDT communities that will help us smooth out some rough spots our Carbide users have had to put up with.&lt;br /&gt;&lt;br /&gt;Visiting developers at the Nokia office in Mt. View. We love getting to shadow developers around and watch them work. Great unfiltered feedback. We had a chance to introduce them to some features in Carbide they didn't know about and help them through some difficult issues that are tough to understand unless you can look over the person's shoulder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-7560903840662316881?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/7560903840662316881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=7560903840662316881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/7560903840662316881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/7560903840662316881'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/03/carbide-cdt-edc-at-eclipsecon-2010.html' title='Carbide, CDT &amp; EDC at EclipseCon 2010'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8MzFF6b5axY/S7J5tmPezYI/AAAAAAAAAS4/RnHTGELfpdQ/s72-c/snacks.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-4226458747377565315</id><published>2010-02-24T10:44:00.000-06:00</published><updated>2010-02-24T10:44:30.428-06:00</updated><title type='text'>Aligning Carbide 3.0 with Eclipse Helios</title><content type='html'>Like most teams that build C/C++ tools on top of Eclipse &amp;amp; CDT we have been building Carbide with the latest platform release and a somewhat forked version of CDT. This made sense as most of our releases have shipped in the winter or spring, long after the last major Eclipse release. But with the next major release of Carbide due after Helios we’ve jumped on the opportunity to align more closely on Eclipse 3.6 and CDT 7.0. How closely? Well, we’ve just started creating our Carbide builds with 3.6M5 and the CDT 7.0 sources straight out of the eclipse.org CVS repository.&lt;br /&gt;&lt;br /&gt;We hesitated to do this in the past because it means we effectively have the entire CDT team contributing to Carbide in real time: any one of the committers can break our build or introduce bugs. But we’re more confident now and our experience with the CDT community has been very good: people rarely break the build and the quality and review of contributions has been excellent.&lt;br /&gt;&lt;br /&gt;And since we sync up with the latest platform and CDT eventually anyway is makes more sense to discover any issues at the moment when the work is developed and contributed, not months later. Now both our internal test team and the Carbide beta group can give the new platform and CDT stuff a workout before it’s released. This also lets us get rid of our internal copy of CDT we would occasionally sync with the public one. Trying to keep it updated was a pain and it created a temping way for us to make changes that weren’t really ready to go back into the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-4226458747377565315?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/4226458747377565315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=4226458747377565315' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4226458747377565315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4226458747377565315'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/02/aligning-carbide-30-with-eclipse-helios.html' title='Aligning Carbide 3.0 with Eclipse Helios'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-5373567267918014286</id><published>2010-02-05T11:12:00.000-06:00</published><updated>2010-02-05T11:12:37.547-06:00</updated><title type='text'>CDT-EDC and Openness</title><content type='html'>While our team here at Nokia has been developing the Eclipse Debugger for C/C++ (EDC) as a component of the CDT project we wanted to do it in the open as much as possible. But we still had quite a bit of initial work to do before the community would be able to evaluate what we were doing. Now that the initial contribution is in CDT we're going to start working on changing our habits to bring more openness and transparency to the effort:&lt;br /&gt;&lt;br /&gt;We're going to start moving our discussions about EDC to the cdt-dev mailing list. This may seem simple but we also don't want to bore the CDT community with issues related to Carbide, Symbian, on-device debugging etc. so we'll need to be a little selective.&lt;br /&gt;&lt;br /&gt;New issues with EDC will be logged in the Eclipse bugzilla instead of our Carbide bugzilla. We'll need to be a little selective here too and probably won't log every minor issue, but anything that merits any sort of discussion will be public.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_8MzFF6b5axY/S2xQ2kQ7Z6I/AAAAAAAAASw/SQuulzgo-Lk/s1600-h/commit+stats.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="http://4.bp.blogspot.com/_8MzFF6b5axY/S2xQ2kQ7Z6I/AAAAAAAAASw/SQuulzgo-Lk/s640/commit+stats.png" width="640" /&gt;&lt;/a&gt;Currently our team has two committers on the CDT project, Warren Paul and myself. I've been syncing the EDC sources in CDT with our internal copy. This has done wonders for my committer stats, it looks like I wrote all of the EDC code, but has masked the contributions of our team members. So we're going to start nominating additional people as CDT committers, starting with the ones who already have a track record of contributions to other components in addition to their work on EDC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-5373567267918014286?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/5373567267918014286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=5373567267918014286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5373567267918014286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5373567267918014286'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/02/cdt-edc-and-openness.html' title='CDT-EDC and Openness'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8MzFF6b5axY/S2xQ2kQ7Z6I/AAAAAAAAASw/SQuulzgo-Lk/s72-c/commit+stats.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-3230214505643567222</id><published>2010-01-28T16:51:00.000-06:00</published><updated>2010-01-28T16:51:38.463-06:00</updated><title type='text'>Carbide, CDT, EDC Update</title><content type='html'>Time for an update from our team here at Nokia working on Carbide 3.0, Eclipse CDT 7.0, and the new Eclipse Debugger for C/C++ (EDC):&lt;br /&gt;&lt;br /&gt;EDC is now part of the regular CDT build. Many thanks to Doug Schaefer for getting this done. I hadn't done much with the CDT build before and wasn't making much progress, but Doug resolved a couple tricky issues, like pulling the TCF source in from Subversion. We still have a version of EDC in our CVS so the Carbide team can easily commit stuff, but I'm syncing it every few days.&lt;br /&gt;&lt;br /&gt;Custom Variable Formatting in EDC: David committed the first phase of support for custom variable formatting. Using a new extension point a plug-in can alter the way data is shown in the Variables view during an EDC debug session. An extension can provide an alternative to the standard structure and content of any variable type.&lt;br /&gt;&lt;br /&gt;We intend to provide formatters for some STL, Qt &amp;amp; Symbian data types. Also there are general purpose formatters for arrays and structs:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8MzFF6b5axY/S2ISqosoSYI/AAAAAAAAASg/72ihP0Xct5c/s1600-h/Clip+1+%285%29.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://3.bp.blogspot.com/_8MzFF6b5axY/S2ISqosoSYI/AAAAAAAAASg/72ihP0Xct5c/s320/Clip+1+%285%29.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Unformatted C/C++ struct&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8MzFF6b5axY/S2ISnllrAMI/AAAAAAAAASY/88FcS9mh2Jg/s1600-h/Clip+1+%284%29.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_8MzFF6b5axY/S2ISnllrAMI/AAAAAAAAASY/88FcS9mh2Jg/s320/Clip+1+%284%29.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Formatted C/C++ struct&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_8MzFF6b5axY/S2ISsP3HqHI/AAAAAAAAASo/hvObRxE_YbU/s1600-h/Clip+1+%286%29.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_8MzFF6b5axY/S2ISsP3HqHI/AAAAAAAAASo/hvObRxE_YbU/s320/Clip+1+%286%29.png" /&gt;&lt;/a&gt;Debug Snapshot Albums: A new feature in EDC is the ability to capture a snapshot of the state of your debug session for later review. A new Snapshot Album view shows the available albums of snapshots from prior debug sessions and lets you annotate their contents. Snapshot Albums can be launched to show a re-creation of the original debug session. Tim and I have been overhauling some of the initial work and getting the UI far enough along so that we can start usability testing soon. I'll write more about this when the work settles down a bit.&lt;br /&gt;&lt;br /&gt;Plug &amp;amp; Play Debug Connectivity: We've made a lot of improvements in usability when starting a debug session on a phone. We started with a detailed analysis of all the options available when connecting to a phone, then narrowed them down into a new launch wizard that can start a debug session in just a few steps. This will make on-device debugging in Carbide a lot easier and I hope to apply some of the lessons learned when we overhaul the launch experience in CDT.&lt;br /&gt;&lt;br /&gt;EDC Symbol Reader Overhaul: Ed &amp;amp; Steve are in the midst of an overhaul of the Dwarf reader in EDC. We originally wrote it for completeness and to have something to build the rest of the debugger around, but knew more work was required to get better performance and memory usage. This effort will likely be continuing for the next several weeks.&lt;br /&gt;&lt;br /&gt;Community Contributions to EDC: People are starting to review the code, report bugs, and contribute patches. In particular John Cortell at Freescale has been improving the way EDC connects to TCF agents and providing a fresh perspective on everything from naming to API visibility.&lt;br /&gt;&lt;br /&gt;That's it for now, I'm diving back into the code...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-3230214505643567222?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/3230214505643567222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=3230214505643567222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/3230214505643567222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/3230214505643567222'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2010/01/carbide-cdt-edc-update.html' title='Carbide, CDT, EDC Update'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8MzFF6b5axY/S2ISqosoSYI/AAAAAAAAASg/72ihP0Xct5c/s72-c/Clip+1+%285%29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-396667141753456353</id><published>2009-12-02T11:49:00.000-06:00</published><updated>2009-12-02T11:49:44.551-06:00</updated><title type='text'>Eclipse Debugger for C/C++ (EDC)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8MzFF6b5axY/SxajiJvBCrI/AAAAAAAAASM/TAcY8d0C-N8/s1600-h/ken_flying.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_8MzFF6b5axY/SxajiJvBCrI/AAAAAAAAASM/TAcY8d0C-N8/s200/ken_flying.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;I'm very happy to announce that the sources for EDC, the Eclipse Debugger for C/C++, are now in the Eclipse CVS repository. EDC is a new component of the CDT project that provides a complete architecture for C/C++ debugging within Eclipse/CDT.&lt;br /&gt;&lt;br /&gt;The Carbide team started developing EDC after setting on a new course that would open up nearly all of our development tools to either the Eclipse or Symbian communities. We couldn't continue using closed source debug components that were becoming difficult to enhance and maintain so we needed something new. We looked at existing open source debug technologies but concluded they wouldn't meet our needs. With the rare opportunity to start from scratch we decided we wanted a debugger that was perfectly tuned with Eclipse, focused on C/C++ development, had ground-up support for multiple cores/contexts, and a modern accessible design that would easily support new features. We also wanted to do the development in the open, in the same community that has supported our efforts over the past five years.&lt;br /&gt;&lt;br /&gt;Building EDC has been much easier than it would have been a few years ago. The advances in the debug platform, the creation of the Debug Services Framework (DSF) in CDT, and the development of the Target Communications Framework (TCF) all provided essential building blocks. EDC is working on top of and between these components,&amp;nbsp; filling in the gaps and building out all the pieces required for a full working debugger.&lt;br /&gt;&lt;br /&gt;While we wanted to develop EDC in the open we also wanted to get enough of the basics working so that when we contributed the code people would be able to easily try it out. So while we worked on all of the basic things a debugger should do we tried to keep the CDT community informed about our progress. Now that the starter code is in we'll be making our continuing work more visible, moving discussions into the eclipse bugzilla from our internal one. There is still a lot of work to do but now we're in a position to do it in collaboration with the community.&lt;br /&gt;&lt;br /&gt;I've started building information about EDC on the CDT wiki &lt;a href="http://wiki.eclipse.org/CDT/cdt-debug-edc"&gt;here&lt;/a&gt;. EDC is not yet part of the regular CDT build but I hope to add it soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-396667141753456353?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/396667141753456353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=396667141753456353' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/396667141753456353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/396667141753456353'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/12/eclipse-debugger-for-cc-edc.html' title='Eclipse Debugger for C/C++ (EDC)'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8MzFF6b5axY/SxajiJvBCrI/AAAAAAAAASM/TAcY8d0C-N8/s72-c/ken_flying.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-3828177341115938723</id><published>2009-10-05T13:20:00.000-06:00</published><updated>2009-10-05T13:20:36.157-06:00</updated><title type='text'>CDT-EDC Sprinting to 10-14</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.gstatic.com/hostedimg/f796f0b469a0095a_landing" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="64" src="http://www.gstatic.com/hostedimg/f796f0b469a0095a_landing" width="96" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;We've kicked off another sprint of EDC development: Warren is refactoring the Dwarf symbol reader to support an general symbol reader API that can be used for other symbol formats. Steve is adding support for more variable types: enums, arrays etc. Stephen is beefing up the Dwarf variable location to handle a lot of variable storage types we hadn't covered yet. Ling is cleaning up some bits of the Windows and Linux reference debuggers so they can reuse the existing CDT launch configurations. Chad is working on support for attaching to a running process. David is adding general support for consoles, integrating the Eclipse console view and data from the TCF streams service. Tim and Vasili are working on general stabilization and unit tests. I'm working on the beginnings of scripting support, outlining a DOM and prototyping how you can automate the EDC debugger from outside of Eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-3828177341115938723?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/3828177341115938723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=3828177341115938723' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/3828177341115938723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/3828177341115938723'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/10/cdt-edc-sprinting-to-10-14.html' title='CDT-EDC Sprinting to 10-14'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6654397274063139792</id><published>2009-09-15T13:02:00.014-06:00</published><updated>2009-09-15T16:23:20.817-06:00</updated><title type='text'>CDT-EDC Breakpoints</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_8MzFF6b5axY/SrAEARwkuWI/AAAAAAAAASE/3tsNGRpcs3Q/s1600-h/indy_pool_blog.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5381805957521389922" src="http://4.bp.blogspot.com/_8MzFF6b5axY/SrAEARwkuWI/AAAAAAAAASE/3tsNGRpcs3Q/s400/indy_pool_blog.jpg" style="cursor: pointer; float: left; height: 272px; margin: 0pt 10px 10px 0pt; width: 203px;" /&gt;&lt;/a&gt;&lt;br /&gt;Finally a break in our long hot Austin summer with some rain and slightly cooler temps last weekend. In the eight hot weeks since my last post our team has been adding a bunch of new stuff to the EDC debugger we're preparing to contribute to CDT:&lt;br /&gt;&lt;br /&gt;Symbian Device Connectivity - In addition to the our reference implementations on Windows and Linux we're now also debugging on a variety of Nokia phones. This has included supporting a new TCF debug agent and adding support for ARM to the existing x86 support in EDC. After using the existing TCF file system service to download everything we also created a new TCF service for installing applications on Symbian phones.&lt;br /&gt;&lt;br /&gt;Breakpoints - Software breakpoints are now supported in a couple ways. If the TCF agent implements support for the TCF breakpoints service we'll use it, otherwise support is implemented in the DSF breakpoints service by writing memory to insert break instructions.&lt;br /&gt;&lt;br /&gt;Disassembly - EDC now includes disassemblers for x86 and ARM that are built on a common disassembly framework. The disassemblers are used to populate the Disassembly View and to assist other operations like stepping.&lt;br /&gt;&lt;br /&gt;Stepping - Stepping over/in/out of a range of code is now working both for TCF agents that know how to step over a range and those that can't. The Symbols service is used to determine the range of instructions to step over and then passes that to the agent. But if the agent doesn't support range stepping then the Run Control service will use the Disassembly service to find all the branch instructions and then set temporary breakpoints to perform the step.&lt;br /&gt;&lt;br /&gt;One reason the breakpoint support was really interesting to implement was the interaction between several of EDC's DSF services. To support source level breakpoints you need to be able to get an address in some code from a source file it was built with and you need to know when and where the code is loaded. In EDC this begins when the debug agent sends a TCF context suspended event when a new code module is loaded. EDC's DSF Run Control service handles the event by sending a module loaded event to the other DSF services. The Module service adds a new entry to it's module list and then tells the Breakpoint service about the new module. The Breakpoint service asks the Symbol service if symbols are available for the new module. If so the Symbol service determines if the module was built using any of the source files that contain breakpoints. The Breakpoint service then asks the Symbol and Module services to provide memory addresses for the breakpoints, then installs them. Finally it tells the Run Control service to resume execution of the suspended context and your program begins running again. None of this is visible to the user except for a subtle change in the breakpoint marker to indicate it was installed successfully.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6654397274063139792?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6654397274063139792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6654397274063139792' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6654397274063139792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6654397274063139792'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/09/cdt-edc-breakpoints.html' title='CDT-EDC Breakpoints'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8MzFF6b5axY/SrAEARwkuWI/AAAAAAAAASE/3tsNGRpcs3Q/s72-c/indy_pool_blog.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-3278645330682978674</id><published>2009-07-15T10:13:00.009-06:00</published><updated>2009-07-15T11:08:58.181-06:00</updated><title type='text'>CDT-EDC Variables</title><content type='html'>It's over &lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;100F/37C in Austin today and we've settled in for the lengthy sweltering drought they call "summer" here. It seems pretty quiet, partly because our Finnish colleagues are all on holiday and because our team has been decimated by some sort of stomach bug that has kept people home sick for several days at a time. Now that I've recovered a bit it's time for an EDC update.&lt;br /&gt;&lt;br /&gt;Variables&lt;/span&gt;&lt;/span&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;, at least the simple ones,&lt;/span&gt;&lt;/span&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt; are showing up now in the EDC debugger:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8MzFF6b5axY/Sl4EpnHz7xI/AAAAAAAAAQ0/AD-ze8zoq6k/s1600-h/Clip+1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 177px;" src="http://2.bp.blogspot.com/_8MzFF6b5axY/Sl4EpnHz7xI/AAAAAAAAAQ0/AD-ze8zoq6k/s400/Clip+1.png" alt="" id="BLOGGER_PHOTO_ID_5358725719540363026" border="0" /&gt;&lt;/a&gt;It all starts when one of the stack frames is asked for a list of its local variables. The EDC Symbol service supplies the list and the name of each variable is turned into an expression for the DSF Expression service to evaluate. When EDC &lt;a href="http://nokiacarbideoneclipse.blogspot.com/2009/06/cdt-edc-expression-parsing.html"&gt;evaluates&lt;/a&gt; the expression (which is really just the variable name) it needs to get the value of the variable.&lt;br /&gt;&lt;br /&gt;For most simple types this is done by getting the location of the variable and reading memory from that address. Yet getting a variable's location out of the symbol information (DWARF 2 in this case) can be a complex multi-step process. For example, the symbol info might say integer X is stored 14 bytes off the stack pointer which is based on a register value with maybe an offset thrown in depending on where you are in the function. But eventually you get to read an value of the correct size (based on the variable's type) and you have something to use for the value of the expression, which is then dropped into the Variables View.&lt;br /&gt;&lt;br /&gt;Of course we have a lot more to do with variables: complex types, formatting, location info etc. but the basic framework is in place to build on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-3278645330682978674?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/3278645330682978674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=3278645330682978674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/3278645330682978674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/3278645330682978674'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/07/cdt-edc-variables.html' title='CDT-EDC Variables'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8MzFF6b5axY/Sl4EpnHz7xI/AAAAAAAAAQ0/AD-ze8zoq6k/s72-c/Clip+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-4203383201608461139</id><published>2009-06-18T12:59:00.014-06:00</published><updated>2009-06-18T20:03:48.779-06:00</updated><title type='text'>CDT-EDC Expression Parsing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8MzFF6b5axY/SjrEYEJuBuI/AAAAAAAAANg/a5IsCQySduA/s1600-h/max.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_8MzFF6b5axY/SjrEYEJuBuI/AAAAAAAAANg/a5IsCQySduA/s200/max.jpg" alt="" id="BLOGGER_PHOTO_ID_5348803425166296802" border="0" /&gt;&lt;/a&gt;I was fortunate to spend some time working at home recently with Max. He's a good coworker: sleeps much of the day and can be trusted with any confidential info that floats by. Sure, there were the occasional insistent interruptions, but no more than I get at the office.&lt;br /&gt;&lt;br /&gt;Last sprint I started working on variable display in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;EDC&lt;/span&gt; debugger and this quickly unraveled in a few interesting directions. One involves parsing and evaluating C/C++ expressions. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;DSF&lt;/span&gt; framework considers all variables to be expressions, so if you want to display the value of variable "i" then you need to implement the same &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;API&lt;/span&gt; used for more complex expressions like "i + 2" or "*((&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ShapePtr&lt;/span&gt;*)i).fore_color". I could probably work around this just to splash some simple variable values up but eventually we would need to parse and evaluate expressions anyway.&lt;br /&gt;&lt;br /&gt;I approached this with some dread: the expression engine in our legacy debugger back-end was created in the mid 90's based on an early version of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CodeWarrior&lt;/span&gt; C++ compiler's front-end. As the C++ language evolved and the debugger was ported to support an endless series of now deceased architectures and platforms it's expression engine was extensively poked, prodded and patched. Eventually I would try to gather up all of the expression issues for a release and work on them all together. It usually took me a day of staring at the code to remember how it worked and some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CVS&lt;/span&gt; sleuthing to discover why various "adjustments" were made. Then I would attempt to fix everything I could without breaking anything. Afterward I would go work on something else and forget the whole experience until the next release.&lt;br /&gt;&lt;br /&gt;But when I first talked to &lt;a href="http://cdtdoug.blogspot.com/"&gt;Doug &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Schaefer&lt;/span&gt;&lt;/a&gt; about developing a new debugger in CDT he wondered if the CDT language parser could be used by the debugger for expression parsing. The debugger in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;JDT&lt;/span&gt; does this, it uses the Java language parser to break an expression into actionable &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;opcodes&lt;/span&gt; and then has an evaluation engine that executes those to get a value.&lt;br /&gt;&lt;br /&gt;I set out to try this in the CDT and so far it is working great! After some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;startup&lt;/span&gt; pointers from Ed, and Mike, and Markus I've got the CDT language parser chewing on various expressions I give it and then producing a stack full of actions (add, subtract, dereference, look up value etc.) that get executed to produce a value. This can be used a lot of places in a debugger: in the Expressions View, when you hover in the editor, and in the Variable View's details pane. There is a lot more to flesh out but it's nice to be able to leverage so much existing work in CDT and build something that will be much easier to maintain in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-4203383201608461139?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/4203383201608461139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=4203383201608461139' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4203383201608461139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4203383201608461139'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/06/cdt-edc-expression-parsing.html' title='CDT-EDC Expression Parsing'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8MzFF6b5axY/SjrEYEJuBuI/AAAAAAAAANg/a5IsCQySduA/s72-c/max.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-404936193078592736</id><published>2009-06-01T15:00:00.001-06:00</published><updated>2009-06-01T15:00:00.553-06:00</updated><title type='text'>CDT-EDC Source Mapping</title><content type='html'>One of the basic things a  debugger needs to do is show you where you are in your source code when you stop at a breakpoint or exception or after stepping. When this happens an EDC debugger's TCF debug agent sends it an event that includes a memory address for the location. If there is no other information available you'll end up in the Debug View with a stack frame location that looks like this:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8MzFF6b5axY/SiQkSUY715I/AAAAAAAAAMU/75IAPYF4kE8/s1600-h/No_modules.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 312px; height: 171px;" src="http://3.bp.blogspot.com/_8MzFF6b5axY/SiQkSUY715I/AAAAAAAAAMU/75IAPYF4kE8/s400/No_modules.png" alt="" id="BLOGGER_PHOTO_ID_5342434955097790354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The next step is to use the EDC-DSF Modules service to determine if this address is in some code the debugger knows about. The Modules service keeps track of all the bits of code loaded in the target process. If you can find a module for the address then you can show something more interesting like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8MzFF6b5axY/SiQl5BZHTXI/AAAAAAAAAM0/YR4zgWvEUkY/s1600-h/No_source.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 175px;" src="http://2.bp.blogspot.com/_8MzFF6b5axY/SiQl5BZHTXI/AAAAAAAAAM0/YR4zgWvEUkY/s400/No_source.png" alt="" id="BLOGGER_PHOTO_ID_5342436719524793714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Finally the EDC debugger checks to see if debug symbols are available for that module. Debug symbols include a mapping table of address ranges to line numbers in your source code. The EDC-DSF Symbols service checks to see if this information is available. If it can find a source location for the address then you can show a complete description like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8MzFF6b5axY/SiQkrqtYHoI/AAAAAAAAAMs/y4IjgIlv9Ak/s1600-h/All_source.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 122px;" src="http://1.bp.blogspot.com/_8MzFF6b5axY/SiQkrqtYHoI/AAAAAAAAAMs/y4IjgIlv9Ak/s400/All_source.png" alt="" id="BLOGGER_PHOTO_ID_5342435390585839234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So that's what I got working last sprint using the Windows debugger and an executable built with gcc/mingw and Dwarf2 for testing. After you have a source file to work with the existing source mapping facilities in CDT can handle finding missing source files and remapping files to new locations. Our legacy debugger back-end does it's own source mapping and it was a problem to keep it in sync with the mapping we are already doing in CDT. The whole process is simple faster, and less error prone in the EDC debugger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-404936193078592736?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/404936193078592736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=404936193078592736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/404936193078592736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/404936193078592736'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/06/cdt-edc-source-mapping.html' title='CDT-EDC Source Mapping'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8MzFF6b5axY/SiQkSUY715I/AAAAAAAAAMU/75IAPYF4kE8/s72-c/No_modules.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6546821242232385617</id><published>2009-05-18T14:00:00.001-06:00</published><updated>2009-05-18T14:00:00.888-06:00</updated><title type='text'>CDT-EDC Launching</title><content type='html'>The team mostly worked on launching EDC debug sessions last sprint. We polished up the Windows launch so terminate shuts everything down correctly and modified the debug agent to shut itself down if no one was connected to it for a short time  There are several launch types in Carbide for Symbian debugging that we thouht we might have to clone for EDC. But we've given them the same treatment as Pawel gave the launches in CDT 6.0: defining one standard set of launch types but assigning multiple launch delegates to each one. I wasn't aware you could do this until Pawel implemented this for the CDT launches. It's great for Carbide because we can reuse our existing launch support and just implement an EDC launch delegate. We probably wouldn't ship Carbide with both CDI and EDC launches enabled for the same type, but it will be great for testing and development.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8MzFF6b5axY/ShFvSuVqlSI/AAAAAAAAALU/2KP1BWefLOk/s1600-h/multiple_launchers.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 41px;" src="http://4.bp.blogspot.com/_8MzFF6b5axY/ShFvSuVqlSI/AAAAAAAAALU/2KP1BWefLOk/s200/multiple_launchers.jpg" alt="" id="BLOGGER_PHOTO_ID_5337169400877978914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Traditionally most C/C++ launches synchronously start a process and then debugging begins. The simple EDC launches start a process asynchronously and then wait for a process created event from the debug agent. Later we'll support more complex launches: ones that debug multiple processes, target specific DLLs and wait for a process to load them, or simply let you look at stuff on the target platform before debugging anything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6546821242232385617?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6546821242232385617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6546821242232385617' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6546821242232385617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6546821242232385617'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/05/cdt-edc-launching.html' title='CDT-EDC Launching'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8MzFF6b5axY/ShFvSuVqlSI/AAAAAAAAALU/2KP1BWefLOk/s72-c/multiple_launchers.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-5337274235313586591</id><published>2009-05-04T11:20:00.000-06:00</published><updated>2009-05-04T11:20:00.242-06:00</updated><title type='text'>CDT-EDC Baby Steps</title><content type='html'>Our team runs two week sprints of development activity in pretty standard &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile&lt;/a&gt; &amp;amp; &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;Scrum&lt;/a&gt; fashion. That seems like a good interval to post updates on our work on the &lt;a href="http://nokiacarbideoneclipse.blogspot.com/2009/03/eclipse-debugger-for-cc-edc.html"&gt;Eclipse Debugger for C/C++ (EDC)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While our intention is to develop EDC as an integral part of the CDT project we haven't committed any of it yet: we want to get more stuff working and the community is too busy getting CDT 6.0 ready to look at it much anyway until after Galileo ships.&lt;br /&gt;&lt;br /&gt;I spent much of the last sprint doing bits of high level design work but got back into the code to finish up a story Warren Paul was working on until he left for the hospital.&lt;br /&gt;&lt;br /&gt;There has a been a baby boomlet in the CDT committer community over the past several months. Our baby Max arrived back in February. Then Pawel Piech had a new one arrive about a month ago. And last sprint it was Warren's turn.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8MzFF6b5axY/SfqKyO2kAPI/AAAAAAAAALM/GvmZymZ7-X0/s1600-h/04242009062.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_8MzFF6b5axY/SfqKyO2kAPI/AAAAAAAAALM/GvmZymZ7-X0/s200/04242009062.jpg" alt="" id="BLOGGER_PHOTO_ID_5330725704531443954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I finished up work he was doing on how the EDC debugger connects to &lt;a href="http://wiki.eclipse.org/DSDP/TM/TCF_FAQ"&gt;TCF&lt;/a&gt; agents. We wanted the clients of the agents, usually DSF services, to not know much about TCF concepts like Peers or Channels, but to just be able to ask for "a run control service for Windows debugging." We created a TCFServiceManager and an TCFAgentDescriptor extension point to hide all the details of launching and getting a TCF service from an agent. The extension contains a property list that describes the agent and a delegate that knows how to start it up. The service manager finds the descriptor that matchs the client's request, asks the delegate to launch the agent if it isn't already in the TCF Peer list, then opens a Channel and returns the requested service. The agents get to decide when to shut themselves down, usually when no one has been connected to them for a while.&lt;br /&gt;&lt;br /&gt;When an EDC debug session starts we hook up the DSF services to whatever TCF services they need to use. So now the EDC Windows debug agent is started automatically when you start a debug session and shuts down shortly after the session terminates.&lt;br /&gt;&lt;br /&gt;The EDC Windows TCF agent is written in C/C++ but we also wanted a reference TCF agent written in Java that can be run in Eclipse or in another instance of the VM. Ling Wang produced one in a previous sprint and just finished adapting it to talk to GDB Server for use by the EDC linux debugger. We'll do something similar for Symbian OS device debugging except it will talk to TRK, the debug agent that runs on the phone.&lt;br /&gt;&lt;br /&gt;Each sprint we try to have a simple ramp-up story we can give to another member of the larger Carbide team to help bring them up to speed on EDC. This time it was adding support for writing register values to the EDC Windows debugger (reading them already worked). Stephen Chong came in cold having never seen DSF or TCF but knocked it out in a few days, complete with unit tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-5337274235313586591?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/5337274235313586591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=5337274235313586591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5337274235313586591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5337274235313586591'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/05/cdt-edc-baby-steps.html' title='CDT-EDC Baby Steps'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8MzFF6b5axY/SfqKyO2kAPI/AAAAAAAAALM/GvmZymZ7-X0/s72-c/04242009062.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-2076618170144512511</id><published>2009-04-09T12:23:00.005-06:00</published><updated>2009-04-09T13:06:05.783-06:00</updated><title type='text'>Instant API</title><content type='html'>One of the aspects of our current financial crisis I've found interesting is the ability of the US &lt;a href="http://en.wikipedia.org/wiki/Federal_Reserve"&gt;Federal Reserve&lt;/a&gt; bank to create additional money out of thin air. How does that work? Do they have some money supply control site where Ben Bernanke enters a number and hits the "Submit" button?&lt;br /&gt;&lt;br /&gt;I was reminded of this during this month's CDT call when we discussed fixing some bugs that require making a few non breaking API changes. This is an issue because it's after the API freeze date but I think our underlying problem is how through the best intentions we've created a bunch of API from code that wasn't intended to be.&lt;br /&gt;&lt;br /&gt;When I started working on CDT the definition of API was a little loose but mostly described interfaces in a public package that we designated API in the CDT docs. Over time we moved to tighten this up and then finally decided to use the same definition as the platform: roughly any interface or class in a non-internal package was to be considered API. Having the API tooling helped with this considerably and newer code like DSF that was designed with this in mind moved into CDT to set a good example.&lt;br /&gt;&lt;br /&gt;But this also means that lots of code in CDT that was probably never intended to be API instantly became API. Sure, it probably could have been designed better in the first place or we could have moved it to internal packages or I could have thought about this more at the CDT Summit instead of watching for the afternoon cookies to be delivered. But now here we are needing to fix bugs and needing to make non breaking changes to do it. On the call I said I thought we should just go ahead and make the changes we need and work on a better plan for this next time.&lt;br /&gt;&lt;br /&gt;We've just been through something like this with our Carbide sources. We had put all the stuff we thought of as public API into a special SDK plug-in. But as part of open sourcing Carbide for the Symbian Foundation we found ourselves needing to conform to the Eclipse platform definition of API. So we kept ourselves busy for several weeks refactoring things into internal packages so we wouldn't suddenly make a bunch of stuff API that was intended to be internal and private. Now that we've finished and we're testing the result we're finding that we've broken plug-ins people have written for Carbide that were using "non-API" stuff that we renamed. We're reevaluated what we need to make real published API now but it's a good lesson that people will do what they need to in order to get their plug-ins to work and worry about the consequences later on. After all no one wants to create a tool and say to their customers "It doesn't solve your problem or work the way you would expect, but we only used the published APIs!" I guess it's a convoluted form of API requirements gathering. &lt;sup id="cite_ref-0" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Ben_Bernanke#cite_note-0" title=""&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-2076618170144512511?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/2076618170144512511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=2076618170144512511' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2076618170144512511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2076618170144512511'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/04/instant-api.html' title='Instant API'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6240620743969116919</id><published>2009-03-25T15:00:00.002-06:00</published><updated>2009-03-25T16:12:40.074-06:00</updated><title type='text'>Logging &amp; Tracing</title><content type='html'>Since I'm &lt;a href="http://nokiacarbideoneclipse.blogspot.com/2009/03/not-going-to-eclipsecon.html"&gt;not at EclipseCon&lt;/a&gt; this week I trying to get some real work done &lt;a href="http://maps.google.com/maps?hl=en&amp;amp;q=701+brazos+78701&amp;amp;ie=UTF8&amp;amp;ll=30.268408,-97.740405&amp;amp;spn=0.011972,0.022745&amp;amp;z=16&amp;amp;iwloc=addr&amp;amp;layer=c&amp;amp;cbll=30.26837,-97.740294&amp;amp;panoid=ER57K0VTDeG8fIlxBnQAZA&amp;amp;cbp=12,40.91884579674853,,0,5"&gt;here in Austin&lt;/a&gt; now that the crowds from &lt;a href="http://sxsw.com/"&gt;SXSW&lt;/a&gt; have left town. I've been looking into the best way to build good diagnostic logging into the EDC debugger, mostly as a support tool. When people report problems that we can't reproduce we can ask them to create a log of debugger activity that can help us pinpoint the problem.&lt;br /&gt;&lt;br /&gt;In Carbide we have a simple diagnostic log based on &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/package-summary.html"&gt;java.util.logging&lt;/a&gt; that works pretty well but then I noticed that Eclipse 3.5M6 includes a new &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=258705"&gt;Equinox tracing API&lt;/a&gt;. When your application normally keeps a log of activity it is probably best to use one of the various logging services to help manage it. But in this case I just want to be able to get more information to help debug problem situations. It looks like the new tracing API will be a nice way to do this: there is a simple way to trace function entry, exit, exceptions, and simple messages. Each trace call can be tied to a particular debug option so we should be able to turn on tracing for specific parts of the code without getting details about everything at once.&lt;br /&gt;&lt;br /&gt;For example this traceEntry call includes the debug option for the EDC run control service and will log the properties passed in and on exit will log the new object created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;public ExecutionDMC contextAdded(Map&lt;string,&gt; properties) {&lt;/string,&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         EDCDebugger.getDefault().getTrace().&lt;span style="font-weight: bold;"&gt;traceEntry&lt;/span&gt;(RUN_CONTROL_TRACE,properties);;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         ThreadExecutionDMC newDMC = new ThreadExecutionDMC(this, properties);&lt;br /&gt;        getSession().dispatchEvent(new StartedEvent(newDMC), RunControl.this.getProperties());&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;         EDCDebugger.getDefault().getTrace().&lt;span style="font-weight: bold;"&gt;traceExit&lt;/span&gt;(RUN_CONTROL_TRACE, newDMC);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         return newDMC;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Eventually we'll need some UI to help people turn this on and off and maybe some tools to help them send the file or attach it to a bug.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6240620743969116919?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6240620743969116919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6240620743969116919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6240620743969116919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6240620743969116919'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/03/logging-tracing.html' title='Logging &amp; Tracing'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-211162370021612331</id><published>2009-03-12T15:40:00.004-06:00</published><updated>2009-03-12T15:40:00.293-06:00</updated><title type='text'>Eclipse Debugger for C/C++ (EDC)</title><content type='html'>In my last post I talked about how the Eclipse C++ debugger landscape had changed and led us to want a new debugger that’s perfectly tuned to work with CDT/DSF and Eclipse. The existing work in the debug platform and CDT/DSF provides a nice set of services that include user interface elements, commands, and APIs for debug data access. What’s missing is the part of the debugger that knows how to interact with the thing you are debugging to actually get the memory and register values, do run control, provide variable values etc. Traditionally this has been provided by a debugger back-end of some sort: CDT includes an integration of DSF and gdb while other tools vendors have a similar debugger engine, often extracted from their legacy product.&lt;br /&gt;&lt;br /&gt;When taking a fresh look at this it didn’t make much sense to create a monolithic debugger back-end and try to integrate it with CDT/DSF. DSF already provides a well designed service model, what’s missing is a complete set of services to flesh out a debugger. Extending the reach of the DSF services into things traditionally done by a debugger back-end would also let us design and develop most of it using the same language, tools, and environment as all of our other Eclipse work.&lt;br /&gt;&lt;br /&gt;Yet some services still need to reach out to native code either to interact with a native debug API or to do something performance intensive like parsing symbol files. So we would need a way for our DSF services to talk to the native code that is likely running in a different process or on another device. Fortunately the &lt;a href="http://wiki.eclipse.org/DSDP/TM/TCF_FAQ"&gt;DSDP/TM/TCF project&lt;/a&gt; solves exactly this problem. TCF is a protocol that lets an agent (usually in native code) provide a discoverable set of services to clients (in this case our DSF services). This lets our new DSF services do as much of the work as they can and then use the TCF protocol to talk to remote devices or native code as required.&lt;br /&gt;&lt;br /&gt;This collection of DSF services and TCF agents will form the foundation for a complete C/C++ debugger in Eclipse. So we're calling this project the Eclipse Debugger for C/C++ (EDC).&lt;br /&gt;&lt;br /&gt;Building a new solution that will let us provide powerful, stable, maintainable, and consistent debugging for the platforms we support (&lt;a href="http://www.symbian.com/index.asp"&gt;Symbian&lt;/a&gt;, Windows, &lt;a href="http://maemo.org/"&gt;Maemo&lt;/a&gt;) means developing DSF services and TCF agents that target them. We’ll end up with a core set of common EDC plug-ins and agents and others that add specific support for a device or operating system. Anything of general interest will be developed within the CDT community and we'll put the Symbian specific work in the &lt;a href="http://www.symbian.com/index.asp"&gt;Symbian&lt;/a&gt; Foundation.&lt;br /&gt;&lt;br /&gt;I'll post more details as we develop stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-211162370021612331?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/211162370021612331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=211162370021612331' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/211162370021612331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/211162370021612331'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/03/eclipse-debugger-for-cc-edc.html' title='Eclipse Debugger for C/C++ (EDC)'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6288654811436068953</id><published>2009-03-12T15:30:00.001-06:00</published><updated>2009-03-12T15:30:01.064-06:00</updated><title type='text'>C/C++ Debugger Retrospective</title><content type='html'>We're doing some new work on the debugger in Carbide and for some perspective I'll take a look back at how the Eclipse C/C++ device debug landscape has changed in the past few years.&lt;br /&gt;&lt;br /&gt;When we first began designing our Carbide.c++ tools for Symbian mobile development a few years ago there was a lot of new activity around C/C++ debugging in the Eclipse community: The CDT project offered a proven set of APIs for debugger integration (CDI), but as vendors continued to move their existing debuggers into new Eclipse based environments it was clear that more work needed to be done to meet the expectations of veteran C/C++ developers.&lt;br /&gt;&lt;br /&gt;Our team began creating C/C++ tools for Symbian using the CodeWarrior IDE and when we designed a new generation of Eclipse based tools we decided to reuse its proven debugger engine and hook it up to CDT/CDI. While this let us quickly deploy a good C/C++ debugger as an initial step, we also carefully watched developments in the device debugging project (DSDP/DD) and the creation of the Debug Services Framework (DSF, now part of CDT). It was also exciting to see the many improvements resulting from the debug platform team’s engagement with the device debug community. We began developing a list of improvements we would like to make to Carbide's debugger that would be difficult to do without using the new work in the platform and DSF.&lt;br /&gt;&lt;br /&gt;At one point I started prototyping an integration of our debugger engine and DSF. While I got a number of things working it also became apparent that it wasn’t a very good fit: DSF uses a highly asynchronous service model for supplying information about the debug session and our debug engine didn’t work that way. I was having to rig up a lot of stuff in a clumsy way to make it work with DSF. To move our debugger forward it was looking like we would not only need to move to DSF but also rework a lot of our debug engine.&lt;br /&gt;&lt;br /&gt;Doing that work looked difficult because the engine code was pretty convoluted and much of it needed an overhaul. Also the engine was closed source licensed code and this would be a issue as we moved to open source all of Carbide along with the &lt;a href="http://www.symbianfoundation.org/"&gt;Symbian Foundation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So that’s how we have moved from our initial legacy debugger integration with CDT/CDI to how it looks today: lots of promising development in the CDT and device debug community but we're not yet able to take advantage of much of it with our existing debugger. So we started thinking about something new that we can develop in the open and tune to work perfectly with DSF and Eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6288654811436068953?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6288654811436068953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6288654811436068953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6288654811436068953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6288654811436068953'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/03/cc-debugger-retrospective.html' title='C/C++ Debugger Retrospective'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6115521009909838663</id><published>2009-03-02T16:58:00.003-06:00</published><updated>2009-03-02T17:08:23.932-06:00</updated><title type='text'>Not Going to EclipseCon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8MzFF6b5axY/SaxlxW4WxrI/AAAAAAAAALE/yz1pyxSTAvg/s1600-h/MaxWeb016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 189px;" src="http://2.bp.blogspot.com/_8MzFF6b5axY/SaxlxW4WxrI/AAAAAAAAALE/yz1pyxSTAvg/s320/MaxWeb016.jpg" alt="" id="BLOGGER_PHOTO_ID_5308729959392921266" border="0" /&gt;&lt;/a&gt;After making the trip the past several years I'm going to have to miss EclipseCon this time. I'd like to be going: I'll miss the sessions, BOFs, and most of all the informal conversations with all the interesting people in the Eclipse community.&lt;br /&gt;&lt;br /&gt;But this year our Baby Max arrived a bit early and so I'll be home helping with diapers etc. Maybe I can catch up with everything on Planet Eclipse when I'm up in the small hours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6115521009909838663?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6115521009909838663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6115521009909838663' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6115521009909838663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6115521009909838663'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/03/not-going-to-eclipsecon.html' title='Not Going to EclipseCon'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8MzFF6b5axY/SaxlxW4WxrI/AAAAAAAAALE/yz1pyxSTAvg/s72-c/MaxWeb016.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-9049479366773618546</id><published>2009-01-12T16:32:00.002-06:00</published><updated>2009-01-12T19:47:57.442-06:00</updated><title type='text'>Carbide 2.0 Update</title><content type='html'>I've somehow let the past several months go by without posting anything so it's time to catch up. Our team launched Carbide 2.0 late last year. It's built on top of Eclipse 3.4 and CDT 5.0 with all of our tools for Symbian OS development built in. It was an unusual release to work on because a lot of the work went into supporting things that are not immediately apparent to someone moving up from Carbide 1,3, For example we added support for &lt;a href="http://www.qtsoftware.com/developer/technical-preview-qt-for-s60"&gt;Qt on S60&lt;/a&gt; but until October when the tech preview was available most people couldn't try it out. There is a new build system for Symbian that we now support but it isn't widely used yet. And as more teams at Nokia move their projects to Carbide we added support for stuff they use but isn't yet ready for the whole development community. Even many of the improvements in CDT 5.0 result in much better C++ code navigation, but are not big visible new features.&lt;br /&gt;&lt;br /&gt;So some people were a little unimpressed at first ("why is this Carbide 2.0? It feels like 1.4") but later came back with much more positive feedback as they found the new work and improvements to existing features.&lt;br /&gt;&lt;br /&gt;But one of the best changes came at the end when we decided that all editions of Carbide should be &lt;a href="http://blogs.s60.com/2008/12/carbidec-now-free-to-developers"&gt;free to anyone&lt;/a&gt;. While we have always had a free edition it didn't include some higher end tools for debugging and analysis. This will help grow the Symbian developer community, and our team is thrilled that our code no longer has to do all that license checking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-9049479366773618546?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/9049479366773618546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=9049479366773618546' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/9049479366773618546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/9049479366773618546'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2009/01/carbide-20-update.html' title='Carbide 2.0 Update'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-4094454061297416682</id><published>2008-06-30T15:51:00.005-06:00</published><updated>2008-06-30T16:26:33.844-06:00</updated><title type='text'>System Search - Finding Files Anywhere</title><content type='html'>Now that CDT 5.0 is out the door I'm starting to review some of the work the Carbide team has done over the past year and pick out things that might make good contributions to the next CDT release.&lt;br /&gt;&lt;br /&gt;As we talk to C++ developers who have moved to our Eclipse based tools we occasionally ask them if they are working in Carbide all of the time or still need to their old IDE environment around. The old IDE is usually Visual Studio or CodeWarrior and we found that people were switching back so they could use them to search for and in a collection of files. C++ developers often need to work with files strewn all over the file system so the regular File Search in Eclipse, which only searches files in the workspace, doesn't do enough for them.&lt;br /&gt;&lt;br /&gt;Of course there is a &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=192767"&gt;bug&lt;/a&gt; for this but we quickly came to the conclusion that we couldn't easily modify or extend standard File Search so we created a System Search that would let you look at files anywhere in the file system.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_8MzFF6b5axY/SGlZtUs8d_I/AAAAAAAAAGs/7V110fNd2Uw/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_8MzFF6b5axY/SGlZtUs8d_I/AAAAAAAAAGs/7V110fNd2Uw/s320/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5217800278471636978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This should look pretty familiar except for the field at the bottom that lets you pick a location in the file system to search. The results are displayed in an adaptation of the standard search results view.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_8MzFF6b5axY/SGla1sN1UzI/AAAAAAAAAG0/6HL0m-Zp2nM/s1600-h/systemsearchresults.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_8MzFF6b5axY/SGla1sN1UzI/AAAAAAAAAG0/6HL0m-Zp2nM/s320/systemsearchresults.png" alt="" id="BLOGGER_PHOTO_ID_5217801521734177586" border="0" /&gt;&lt;/a&gt;We've gotten a lot of very positive customer feedback but people have also been quick to ask for more features. There is also some more work we need to do before contributing this to CDT: a little more code cleanup is needed and more testing on multiple platforms.&lt;br /&gt;&lt;br /&gt;If you want to play around with System Search the code is attached to the &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=192767"&gt;bug&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-4094454061297416682?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/4094454061297416682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=4094454061297416682' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4094454061297416682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4094454061297416682'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/06/system-search-finding-files-anywhere.html' title='System Search - Finding Files Anywhere'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_8MzFF6b5axY/SGlZtUs8d_I/AAAAAAAAAGs/7V110fNd2Uw/s72-c/Picture+2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-376082306421294013</id><published>2008-06-26T14:10:00.004-06:00</published><updated>2008-06-26T15:42:09.033-06:00</updated><title type='text'>Austin Eclipse DemoCamp</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_8MzFF6b5axY/SGQMs69EELI/AAAAAAAAAGk/QqVxZftKd1Y/s1600-h/IMG_1108a.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_8MzFF6b5axY/SGQMs69EELI/AAAAAAAAAGk/QqVxZftKd1Y/s320/IMG_1108a.jpg" alt="" id="BLOGGER_PHOTO_ID_5216308234281029810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm back at my desk now trying to stay awake after a coma inducing lunch of &lt;a href="http://www.stubbsbbq.com/"&gt;Stubb's BBQ&lt;/a&gt; following the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Austin"&gt;Austin DemoCamp&lt;/a&gt;. A bunch of Nokia people from our office joined &lt;span&gt;Chris Aniszczyk and people from IBM, Freescale, and others to look at a few demos and talk about Ganymede. (That's Chris pictured along with John Cortell and Glenn Meter).&lt;br /&gt;&lt;br /&gt;Despite developing Eclipse plug-ins all day I haven't spent much time looking at the new PDE stuff in &lt;/span&gt;&lt;span&gt;Ganymede so it was great to talk to Chris about it first hand. I talked a bit about CDT and how we develop Carbide.&lt;br /&gt;&lt;br /&gt;The session was also something of a reunion of former Metrowerks people: the team that developed the CodeWarrior tools was bought by Motorola years ago which then spun them out along with Freescale. The CodeWarrior for Symbian team then moved to Nokia and now develops Carbide.c++ at our office here next to the coma inducing BBQ. So a lot of people who created the CodeWarrior tools back then are working with Eclipse now. It was great to have a chance to visit with some old friends and make some new ones. &lt;/span&gt;&lt;span&gt; I'm hoping we can continue to get the Eclipse people in Austin together now and again.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-376082306421294013?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/376082306421294013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=376082306421294013' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/376082306421294013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/376082306421294013'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/06/austin-eclipse-democamp.html' title='Austin Eclipse DemoCamp'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_8MzFF6b5axY/SGQMs69EELI/AAAAAAAAAGk/QqVxZftKd1Y/s72-c/IMG_1108a.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-8160370787026465940</id><published>2008-04-01T00:11:00.001-06:00</published><updated>2008-03-31T23:14:54.508-06:00</updated><title type='text'>Annoucing Eclipse b4</title><content type='html'>Details were unveiled today about project b4, a new release of Eclipse focusing on the past. Project lead Paul Rubens said "We're especially interested in the Baroque era, but all the contributions to Eclipse over the centuries will be gathered in this release."&lt;br /&gt;&lt;br /&gt;An example of the historical breadth of the project can be seen in a patch contributed by Roman Centurion Lucius Vorenus. "We were a little concerned about support as the author has been dead for over 2000 years, but his patch applied cleanly so we decided to go for it." said Rubens. "The patch introduced the ISlaveResource interface and all of his unit tests passed."&lt;br /&gt;&lt;br /&gt;Backward compatibility is an important goal of b4. "The ruins in Cyrenaica have yielded some interesting early API inscribed in stone tablets. We plan to support them all, except the ones that were already broken when we found them."&lt;br /&gt;&lt;br /&gt;Researchers have also deciphered a patch hidden in the ceiling of the Sistine Chapel. "We normally would only take a patch if it is attached to a bugzilla, but the sheer beauty of this one, all in the original Latin, is too good to pass up. Besides it's just an NPE fix."&lt;br /&gt;&lt;br /&gt;The contributions to b4 often reflect the hazards of a time when many committers' work was interrupted by violence and disease. "Many of the project teams were decimated by the Black Death, and a lot of promising contributions are unfinished. They won't compile because they end with phrases like 'castle breached, the end is near' or simply 'Aaaaarrrrrrggghhh'."&lt;br /&gt;&lt;br /&gt;Development of b4 will be completely open and transparent according to Rubens: "Certainly it will be open, just as Roman citizenship was open to anyone who lived in the city." He hastened to add "But that was later extended to most of Italy and then even to some barbarian tribes."&lt;br /&gt;&lt;br /&gt;The final release date for b4 is still uncertain "There are several patches in the Vatican archives we want, but now the Pope is involved in the IP review process and we don't know how long it will take."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-8160370787026465940?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/8160370787026465940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=8160370787026465940' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/8160370787026465940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/8160370787026465940'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/04/annoucing-eclipse-b4.html' title='Annoucing Eclipse b4'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-2735425977612730756</id><published>2008-02-25T11:15:00.000-06:00</published><updated>2008-02-25T11:10:05.406-06:00</updated><title type='text'>Carbide 1.3 End Game</title><content type='html'>We are in the last weeks of testing Carbide 1.3: the code is frozen, the test team is rechecking everything, and the beta testers are trying out the release candidate build. This is usually the time when some bug that has been around all along makes a surprise appearance in a really troubling way.&lt;br /&gt;&lt;br /&gt;Last week we started getting some reports of the entire workbench locking up. People who were really beating on the tools all day said that often after a paste or save operation the UI would be unresponsive. Of course we couldn't reproduce the problem but we had two interesting clues: some people said the UI started responding again after a while and one beta tester sent in a screenshot of the frozen workbench.&lt;br /&gt;&lt;br /&gt;Everyone has their own personal "time out" setting: the amount of time they are willing to wait for an unresponsive application to start working again before they kill it or restart their computer or chuck it over the cube wall. So that some people said the workbench came back to life after a while probably indicated we had some lengthly process blocking the UI thread, not that Carbide was frozen forever.&lt;br /&gt;&lt;br /&gt;The screenshot gave us a few more clues: the progress indicator said the CDT indexer job was just starting and that the text the user was pasting hadn't yet appeared in the editor. I started trying to reproduce the problem by forcing a project to reindex and then repeatedly pasting code.&lt;br /&gt;&lt;br /&gt;After a lot of pasting we found that the problem had nothing to do with the paste operation but with the use of the control key (as in ctrl-v to paste or ctrl-s to save). With the control key down CDT was asked to produce a hyperlink. Normally this happens quickly because the file has already been indexed and the results cached, but when it's dirty it proceeds to do some indexing on the UI thread which leaves the workbench completely unresponsive.&lt;br /&gt;&lt;br /&gt;It seemed like the right thing to do in this case was to just not do the indexing if the cache was stale. We turned to the CDT team to confirm this and within a few hours we had changes in place to prevent this problem and a couple other &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=219834"&gt;related issues&lt;/a&gt; too.&lt;br /&gt;&lt;br /&gt;So now I'm starting this week like I did the last: hoping Carbide 1.3 can slide out the door without any serious issues popping up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-2735425977612730756?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/2735425977612730756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=2735425977612730756' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2735425977612730756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2735425977612730756'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/02/carbide-13-end-game.html' title='Carbide 1.3 End Game'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-872197757068285995</id><published>2008-02-20T11:38:00.000-06:00</published><updated>2008-02-20T11:38:21.154-06:00</updated><title type='text'>Looking at DSF</title><content type='html'>Our next major release of Carbide.c++ will be based on Ganymede which will include the quickly maturing &lt;a href="http://wiki.eclipse.org/DSDP/DD/DSF"&gt;Debug Services Framework&lt;/a&gt;. The DSF team has been busy joining the framework with CDT 5.0 and beefing up the reference implementation that works with gdb on linux.&lt;br /&gt;&lt;br /&gt;The Carbide.c++ debugger uses the CDI apis to let our debug engine provide services to the common C++ debug support in CDT. That has worked pretty well but there are lots of new things we would like to do that would be a lot easier using DSF so I'm going to start looking into bringing up our debugger in this new, more flexible, and highly asynchronous environment. I haven't looked at DSF in any depth since last September and there has been a lot of refactoring since then but now that things have settled down with M5 I'm going to dive back in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-872197757068285995?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/872197757068285995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=872197757068285995' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/872197757068285995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/872197757068285995'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/02/looking-at-dsf.html' title='Looking at DSF'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-2973962906451229682</id><published>2008-02-11T14:00:00.000-06:00</published><updated>2008-02-11T13:38:08.569-06:00</updated><title type='text'>Bug Hunting in Big D</title><content type='html'>The people in our beta group have been really positive while sending plenty of constructive criticism about things we need to improve. It's been very satisfying working with them to track down some of the bugs that escaped us last time. One was a report about debugger performance: some people said that when debugging they found that "stepping through code was really slow."&lt;br /&gt;&lt;br /&gt;These kinds of problems can be really difficult to reproduce and fix because there are so many variables. Only a few people were reporting the problem and it wasn't consistent. We couldn't reproduce it at all.&lt;br /&gt;&lt;br /&gt;A lot of things can impact debugger stepping performance including the speed of the debug connection and the number of variables displayed each time, but none seemed to be a factor in this case.&lt;br /&gt;&lt;br /&gt;As people ran into the problem we started to get more specific information: we heard that not only was stepping in the debugger slow but the entire Eclipse environment became really slow. Then someone noticed that everything on their computer was slow: every application, menu etc.&lt;br /&gt;&lt;br /&gt;Next we heard from a developer on one of Nokia's software teams in Dallas. He could reproduce the problem but it only happened when debugging a particular project. I setup the same project and tried the same steps but couldn't reproduce the problem.&lt;br /&gt;&lt;br /&gt;A trip to Dallas from our office here in Austin can easily occupy a long day, much of it spent in traffic, so first we tried a screen sharing session. That confirmed I was following the same repro steps with the project but getting different results: my debug session hummed along while my Dallas colleague's ground to a halt with the Java VM process sucking up 80 - 90% of the cpu. But the most interesting thing was that the application he was debugging (a music player) was sending a huge amount of text to the console view. The entire time a song was playing the console view was flooded with debug output. After playing a few songs the audio began to skip and the big slow down began.&lt;br /&gt;&lt;br /&gt;I pulled a few long songs from my music collection and while my console view was also flooded with various debug messages I didn't see any performance hit. Time for a road trip.&lt;br /&gt;&lt;br /&gt;When I got to Dallas we quickly reproduced the problem and all the evidence pointed to the console output. The platform debug console has a setting that limits the amount of text in a console. My first theory was that we were overloading whatever method keeps the console under this limit. Maybe we were dumping in so much text it was thrashing about trying to keep the limit enforced?&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;Eclipse does so much cool stuff for you automatically I assumed the console limit worked that way too. But that's built into the debug platform's ProcessConsole and for various reasons ours is built on top of MessageConsole instead. So we didn't have any limit on the amount of text in a console. Over time all the text dumped into our console consumed more and more memory.&lt;br /&gt;&lt;br /&gt;Limiting the amount of text in the console view was simple enough and has fixed the problem. I'm still not sure why the effect of the big memory leak on my Dallas colleague's computer was so severe while my similarly configured laptop wasn't bothered. In any event the whole experience shows how initial descriptions of bugs can be misleading and that you need work closely with the people using the tools all day in order to track down difficult to reproduce problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-2973962906451229682?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/2973962906451229682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=2973962906451229682' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2973962906451229682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2973962906451229682'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/02/bug-hunting-in-big-d.html' title='Bug Hunting in Big D'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-5250099189457271470</id><published>2008-01-24T15:50:00.000-06:00</published><updated>2008-01-24T15:50:09.277-06:00</updated><title type='text'>Carbide.c++ beta winding down</title><content type='html'>Our Carbide.c++ tools for Symbian OS development have spent the last several months in front of hundreds of people in our beta program. Now it's time to wrap things up and get ready to release. For this update we moved to version 3.3.1 of the platform and 4.0.3 of CDT, added lots of little enhancements, fixed hundreds of bugs, and posted about a dozen patches for CDT and the platform.&lt;br /&gt;&lt;br /&gt;People really like the improvements to the indexer and code navigation tools in CDT and gave us lots of feedback on where they could be improved, especially support for C++ templates. All the positive response was tempered by continued frustration with the way projects have to be &lt;a href="http://nokiacarbideoneclipse.blogspot.com/2007/05/structuring-c-projects-in-eclipse_07.html"&gt;organized&lt;/a&gt; so we are still looking for solutions to that problem.&lt;br /&gt;&lt;br /&gt;Symbian OS projects have their own build system and our support for it is now better integrated into the new CDT project model. Our debugger now takes better advantage of the contextual launch support in Eclipse 3.3 and we added a view for managing and debugging lots of executables.&lt;br /&gt;&lt;br /&gt;Opening up our bugzilla to everyone in the beta program has really been helpful and brought our team a little closer to everyone using the tools. Making our nightly builds available has let us get fixes out to people fast for quick validation. Overall I think running our beta program much like an Eclipse project has let us make the right kinds of changes faster than we have before.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-5250099189457271470?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/5250099189457271470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=5250099189457271470' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5250099189457271470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/5250099189457271470'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2008/01/carbidec-beta-winding-down.html' title='Carbide.c++ beta winding down'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-2735198454796826769</id><published>2007-11-26T16:10:00.000-06:00</published><updated>2007-11-26T16:06:26.822-06:00</updated><title type='text'>Open Carbide.c++ beta begins</title><content type='html'>Back at the CDT summit in late September someone asked me if I had gone into hiding. Not exactly, but along with the rest of the Carbide.c++ team here at Nokia I've been focused on getting a new update (v1.3) out to our beta community. We finished the first beta drop just before the Thanksgiving break so it's now out there for anyone to try out.&lt;br /&gt;&lt;br /&gt;For this update to our C++ tools for Symbian OS we moved to a new version of the platform (3.3.x) and CDT (4.0.x). We are also reinventing our development process to be more agile and responsive with a lot of the inspiration for this coming from the Eclipse community: We're now running our beta program through a &lt;a href="http://groups.google.com/group/carbidecpp-beta?hl=en"&gt;google group&lt;/a&gt; that is open to anyone who asks to join. Our internal bugzilla has been opened up so that everyone can use it to report and track bugs. We'll be doing periodic beta releases that have some testing behind them and also publishing the last week's worth of auto-tested nightly builds. The nightly builds will give us a way to validate bug fixes and get immediate feedback from the thrill seekers who don't want to wait for the next beta.&lt;br /&gt;&lt;br /&gt;So far we're off to a good start with a couple hundred downloads and a couple dozen new bugs, mostly from people in the rest of the world that wasn't focused on turkey and football last week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-2735198454796826769?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/2735198454796826769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=2735198454796826769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2735198454796826769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/2735198454796826769'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/11/open-carbidec-beta-begins.html' title='Open Carbide.c++ beta begins'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-4453310110371907345</id><published>2007-09-29T19:10:00.000-06:00</published><updated>2007-09-29T18:10:47.381-06:00</updated><title type='text'>"I've got Barbies in my suitcase"</title><content type='html'>I took a break from Carbide 1.3 development to attend last week's &lt;a href="http://wiki.eclipse.org/CDT/summitfall2007"&gt;CDT summit&lt;/a&gt; in Ottawa. I wasn't sure what to expect going in but after people presented their prospective contributions we ended up with an exciting list of new work planned for CDT 5.0 next summer. There are a series of improvements to existing features like the parser, code navigation tools, editor, project model etc., and some new things like a class browser and the integration of the device debug project's &lt;a href="http://wiki.eclipse.org/index.php/DSDP/DD"&gt;DSF&lt;/a&gt; framework.&lt;br /&gt;&lt;br /&gt;We also talked about &lt;a href="http://wiki.eclipse.org/index.php/EFS"&gt;EFS&lt;/a&gt; support in CDT and Doug is going to explore using this to allow projects to include an arbitrary set of files from anywhere in the file system. Not sure if it will work yet but this is a big issue for Carbide users and anyone else doing C/C++ so I'm encouraged by any attempt to fix it.&lt;br /&gt;&lt;br /&gt;I got to share a lot of the feedback we have received from Carbide users and demo our new Executables View. The debug support in CDT is in transition and we had a good series of discussions about how to proceed. I've been exploring moving Carbide's debugger to use DSF and it was great to be able to talk to Pawel Piech (DSF lead) and the team from Ericsson doing the gdb/mi reference implementation. Pawel endured some good natured harassment about the current look of the DSF launch icon&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_8MzFF6b5axY/Rv7DttR1gBI/AAAAAAAAABI/jDl9RQwEt7Y/s1600-h/c_app.gif"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_8MzFF6b5axY/Rv7DttR1gBI/AAAAAAAAABI/jDl9RQwEt7Y/s320/c_app.gif" alt="" id="BLOGGER_PHOTO_ID_5115741416755396626" border="0" /&gt;&lt;/a&gt;  which finally prompted his shocking but unverified confession about the contents of his luggage.&lt;br /&gt;&lt;br /&gt;On the flight back to Austin I noticed a guy a couple rows up running Eclipse on his laptop (It stood out in the sea of solitaire games, powerpoint slides and action movies on the other screens).  Turned out to be &lt;span&gt;&lt;a href="http://mea-bloga.blogspot.com/"&gt;Chris Aniszczyk&lt;/a&gt; so I finally got to meet and chat with him during the layover in Chicago.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Again I was impressed by the professional, pragmatic, and friendly bunch of people in the CDT community. Thanks to Doug, the QNX team, and the Eclipse folks for hosting the summit.&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-4453310110371907345?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/4453310110371907345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=4453310110371907345' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4453310110371907345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4453310110371907345'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/09/ive-got-barbies-in-my-suitcase.html' title='&quot;I&apos;ve got Barbies in my suitcase&quot;'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_8MzFF6b5axY/Rv7DttR1gBI/AAAAAAAAABI/jDl9RQwEt7Y/s72-c/c_app.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-4244912790620033299</id><published>2007-06-12T07:55:00.000-06:00</published><updated>2007-06-12T06:57:07.060-06:00</updated><title type='text'>Usability and CDT 4.0</title><content type='html'>When we first began developing our C++ tools we wanted to see what usability issues developers would face so we ran a series of testing sessions with people new to Eclipse, people who had used Eclipse for Java development, and people developing with Visual Studio.&lt;br /&gt;&lt;br /&gt;The bug &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=154280"&gt;154280&lt;/a&gt; has more details but my story here is that the issues on the front line have been addressed in Europa.&lt;br /&gt;&lt;br /&gt;When we asked people to build a newly created project they looked for a build button in the toolbar. (The platform has a Build All button but it's not easily identifiable and it &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=92990"&gt;builds all&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_8MzFF6b5axY/Rm3FuNaEy_I/AAAAAAAAAA4/vd1RvIYGoy8/s1600-h/nn_buildbtn.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_8MzFF6b5axY/Rm3FuNaEy_I/AAAAAAAAAA4/vd1RvIYGoy8/s320/nn_buildbtn.png" alt="" id="BLOGGER_PHOTO_ID_5074929752780098546" border="0" /&gt;&lt;/a&gt;Now CDT 4.0 includes a Build Project button that builds the active configuration of the selected project and has a menu that lets you build any of the other ones.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When we asked people to debug their project they naturally hit the Debug button and ended up getting confused by the Launch Configuration dialog.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_8MzFF6b5axY/Rm3FDdaEy8I/AAAAAAAAAAg/P_c_rlQxeN0/s1600-h/nn_contextlaunch.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_8MzFF6b5axY/Rm3FDdaEy8I/AAAAAAAAAAg/P_c_rlQxeN0/s320/nn_contextlaunch.png" alt="" id="BLOGGER_PHOTO_ID_5074929018340690882" border="0" /&gt;&lt;/a&gt;Now CDT 4.0 takes advantage of the new debug platform support for &lt;a href="http://eclipse-debug.blogspot.com/2007/05/context-launchingfriend-or-foe.html"&gt;contextual launching&lt;/a&gt;: Hitting the debug button now does what people expect, launching a debug session for the selected project and using the launch shortcut to ask for any settings it needs along the way.&lt;br /&gt;&lt;br /&gt;We're tracking lots of other usability issues from C/C++ developers but I'm pleased these two big out of the box problems are fixed in Europa.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_8MzFF6b5axY/Rm3FDdaEy8I/AAAAAAAAAAg/P_c_rlQxeN0/s1600-h/nn_contextlaunch.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-4244912790620033299?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/4244912790620033299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=4244912790620033299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4244912790620033299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/4244912790620033299'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/06/usability-and-cdt-40.html' title='Usability and CDT 4.0'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_8MzFF6b5axY/Rm3FuNaEy_I/AAAAAAAAAA4/vd1RvIYGoy8/s72-c/nn_buildbtn.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6963247794558654713</id><published>2007-05-14T15:55:00.000-06:00</published><updated>2007-05-14T14:52:45.470-06:00</updated><title type='text'>Would you like JDT with that?</title><content type='html'>In a recent conversation in bugzilla someone asked if it was common for people using CDT to also have the JDT installed. The short answer is "yes" but that's not always because they are developing in Java as well as C++.&lt;br /&gt;&lt;br /&gt;When people start with our Carbide.c++ they run a branded installer like you get with most Windows apps and you get an entry in the Start menu etc. We install a JRE and a bunch of Eclipse features but not the JDT. People focused on C++ development didn't want to see "all the Java stuff" so we left it out.&lt;br /&gt;&lt;br /&gt;But people who are also doing Java development (sometimes developing plug-ins for Carbide) or who already have Eclipse configured with their favorite plug-ins can just take our Carbide features and merge them in. Corporate IT people often like to have a standard version of Eclipse that usually includes the JDT since it is seen as part of the base platform. Also some plug-ins out there assume the JDT is present and will not work correctly if it isn't. So we've got to assume there is a good chance the JDT will show up at some point.&lt;br /&gt;&lt;br /&gt;I recall one of the sessions at EclipseCon this year where the presenter was showing Eclipse with all of the Europa plug-ins (and maybe some others) installed. The UI was an impressive jumble of widgets and completely confusing. Someone said something about capabilities being useful but added that "no one uses them."&lt;br /&gt;&lt;br /&gt;I was surprised as we use capabilities extensively to keep the user experience focused on C++ development when people are using Carbide, mostly by hiding CDT UI that isn't used when developing apps for Symbian OS. At some point I'll have to see if we could start including the JDT but keep the UI subdued unless you start working with Java projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6963247794558654713?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6963247794558654713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6963247794558654713' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6963247794558654713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6963247794558654713'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/05/would-you-like-jdt-with-that.html' title='Would you like JDT with that?'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-594872370539913102</id><published>2007-05-07T14:36:00.000-06:00</published><updated>2007-05-07T14:37:49.865-06:00</updated><title type='text'>Structuring C++ Projects in Eclipse</title><content type='html'>We’ve been struggling with how to represent C++ projects in Eclipse so I thought I would share our story in case anyone can offer any better suggestions:&lt;br /&gt;&lt;br /&gt;It’s common for developers to already have their code organized something like this:&lt;br /&gt;&lt;br /&gt;/Source/Projects/CPPProjectOne/src – project one specific code&lt;br /&gt;/Source/Projects/CPPProjectTwo/src – project two specific code&lt;br /&gt;/Source/Projects/CPPProjectThree/src – project three specific code&lt;br /&gt;/Source/Projects/Common/src – source common to all CPP projects&lt;br /&gt;&lt;br /&gt;We can not copy the source files to another location or move anything around, we have to work with them exactly where they are in the file system. Since for each project we call a custom make builder that doesn’t depend on anything in Eclipse the main thing we want our Eclipse projects to do is contain as much of the code as possible so that all of the splendid IDE features work correctly.&lt;br /&gt;&lt;br /&gt;Our first thought was to put the Eclipse projects in the workspace and then stuff them with linked resources to the actual source files and folders. That seemed like a great fit for linked resources and would be fairly straightforward to do. However we discovered that linked resources are not really first class citizens in the workspace: to begin with they don’t work with version control (&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41929"&gt;41929&lt;/a&gt;) so we had to abandon that idea.&lt;br /&gt;&lt;br /&gt;Our next try was to just locate the Eclipse project and it’s source root where the cpp project’s code actually lives. When we import a cpp project’s make file we can look at the included sources and determine a root location that covers all the files. So using the above example CPPProjectOne’s source root would be /Source/Projects. This works OK, we end up with an Eclipse project that lives at /Source/Projects/.project and includes resources for all of the desired files (plus lots of other stuff too).&lt;br /&gt;&lt;br /&gt;The trouble begins when I want to work with CPPProjectTwo at the same time. I find that it has the same common source root location as CPPProjectOne, but I can’t put a second Eclipse project there as a .project file already exists in that location.&lt;br /&gt;&lt;br /&gt;The best work around we have been able to think of for now is to have the second project use a more narrowly scoped source root, in this case it could use /Source/Projects/CPPProjectTwo. But that will leave other files it uses, like those from /Source/Projects/Common/src, out of the project.&lt;br /&gt;&lt;br /&gt;If we could either put more than one Eclipse project in the same location or tell a project to use something other than its location as a source root (&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=78438"&gt;78438&lt;/a&gt;) then we could accommodate any number of projects. Or if linked resources worked better we could use those. Just now we’re stuck telling people to try the work around but we need to determine what direction to pursue longer term so we can make this work the way people expect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-594872370539913102?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/594872370539913102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=594872370539913102' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/594872370539913102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/594872370539913102'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/05/structuring-c-projects-in-eclipse_07.html' title='Structuring C++ Projects in Eclipse'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-213326455560228474</id><published>2007-04-16T12:52:00.000-06:00</published><updated>2007-04-16T14:04:10.999-06:00</updated><title type='text'>Carbide 1.2 is Out the Door</title><content type='html'>We've completed the final build for Carbide 1.2 so I can come up for air now. Carbide 1.2 is using Eclipse 3.2.1 and a modified version of CDT 4.0M5. Taking the risk on a pre-release version of CDT has worked out well: the code navigation features bring us much closer to what people expect and we've seen few problems. Over the last couple months our team has been helped by a great beta group of several hundred people testing Carbide in a production environment with lots of sizable real world projects. This has been illuminating and occasionally humbling as people told us what we had to deliver to pull them away from their current C++ development environment. We couldn't get all of it into this release and so we're left with a lot of raw feedback to distill into specific fixes and enhancements for next time.&lt;br /&gt;&lt;br /&gt;Now I need to move ahead with work on my CDT bug list and planning for the next Carbide release which will use Eclipse 3.3 and the final version of CDT 4.0. How did it get to be mid April already?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-213326455560228474?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/213326455560228474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=213326455560228474' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/213326455560228474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/213326455560228474'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/04/carbide-12-is-out-door.html' title='Carbide 1.2 is Out the Door'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-7157609889043136386</id><published>2007-03-24T08:28:00.000-06:00</published><updated>2007-03-24T10:08:14.010-06:00</updated><title type='text'>Jolting News</title><content type='html'>Since returning from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;EclipseCon&lt;/span&gt; I'm mostly had my head down focused on fixing bugs in the final few weeks before we ship Carbide.c++ 1.2. Then came the announcement last week that Carbide 1.1 had won the &lt;a href="http://www.joltawards.com/"&gt;Jolt award&lt;/a&gt; for best mobile development tool! We had been runner up the year before but this time we beat out &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;NetBeans&lt;/span&gt; and few others to capture the Jolt. Since we're all focused on the next release it's nice to get some recognition for the last one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-7157609889043136386?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/7157609889043136386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=7157609889043136386' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/7157609889043136386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/7157609889043136386'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/03/jolting-news.html' title='Jolting News'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6326997086547727924</id><published>2007-03-06T16:52:00.000-06:00</published><updated>2007-03-06T17:19:27.860-06:00</updated><title type='text'>CDT 4.0 Demo at EclipseCon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_8MzFF6b5axY/Re32xXtSErI/AAAAAAAAAAU/UAPJwRHYMJ0/s1600-h/cdt_demo.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_8MzFF6b5axY/Re32xXtSErI/AAAAAAAAAAU/UAPJwRHYMJ0/s320/cdt_demo.jpg" alt="" id="BLOGGER_PHOTO_ID_5038954886135419570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Doug Schaefer and Markus Schorn just finished a great demo of the new features in CDT 4.0 to a packed room. We're shipping our next version of Carbide with a customized version of CDT 4.0M5 and after a couple weeks of internal testing and a week in front of our beta testers things are looking very good. The improvements in code editing and navigation are really a big leap forward for CDT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6326997086547727924?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6326997086547727924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6326997086547727924' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6326997086547727924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6326997086547727924'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/03/cdt-40-demo-at-eclipsecon.html' title='CDT 4.0 Demo at EclipseCon'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_8MzFF6b5axY/Re32xXtSErI/AAAAAAAAAAU/UAPJwRHYMJ0/s72-c/cdt_demo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-8806527782804220780</id><published>2007-03-05T13:13:00.000-06:00</published><updated>2007-03-05T13:14:16.239-06:00</updated><title type='text'>Automated UI Testing</title><content type='html'>Our team has been adding automated UI testing to our JUnit tests over the past year. Since there seems to be growing interest in doing this I thought I would tell our story.&lt;br /&gt;&lt;br /&gt;To begin with our developers wanted to run JUnit tests and our test team wanted to automate much of the testing they were doing by hand. It made sense to combine those efforts and have one set of tests everyone could run and contribute to. But we couldn't test everything we needed from JUnit without the ability to occasionally punch a button, enter text into a wizard, or choose a menu item.&lt;br /&gt;&lt;br /&gt;We looked at tools that let you record user actions and then play them back. This makes a great demo and has immediate appeal to what many people initially think they want from automated UI testing. If you are a test team that is given a product and you just want to automate what would otherwise be a laborious manual test effort this is probably the best you can do. But tests constructed this way are often fragile and superficial: minor UI changes can break them and they don't really know what's going on underneath. We wanted our development and test efforts to be better integrated so we looked for a way to drive the UI from our JUnit tests.&lt;br /&gt;&lt;br /&gt;We ended up using &lt;a href="http://abbot.sourceforge.net/doc/overview.shtml"&gt;Abbot&lt;/a&gt; to do this with pretty good results. Abbot also has a script editor/recorder called Costello that doesn't work with SWT yet. I think this has led some people to think Abbot doesn't work with SWT at all, but we were interested in the stuff that we could call directly from our JUnit code and got that working right away.&lt;br /&gt;&lt;br /&gt;Much of Abbot is pretty low-level and we ended up building a utility layer on top of it to handle common tasks and boilerplate code. This was easy to do and makes the code that uses it a lot cleaner.&lt;br /&gt;&lt;br /&gt;A problem all UI testing tools have is identifying the exact widget to act on. If it doesn't have a unique name you have to do something fragile like reference it by relative position to known widgets. Even if it is something like a button that has a name like "Cancel" the test will break as soon as 'Cancel" is translated to another language so you'll need to translate that portion of the tests as well. The solution is to give significant SWT widgets unique IDs when you create them. This is easy to do so we started adding the ID to any UI that we create for Carbide. Of course that leaves the UI from the platform and CDT so there are still plenty of cases where we have to hunt around for the correct widget.&lt;br /&gt;&lt;br /&gt;Our tests can drive the UI faster than any human could. This can lead to false problems with the test: it may click on a button in one view and then want to look at an expanded tree item in another view but the tree doesn't expand instantly. Events often have to ripple through the platform before the UI settles down. There are places where you may need to insert a pause to make the test work reliably. This has to be done judiciously because there may be someone out there who downs enough coffee to turn what seems like unlikely behavior into a real bug.&lt;br /&gt;&lt;br /&gt;With the addition of Abbot we've been able to write tests that automate much of the debugger in CDT. While some of the tests in CDT are updated and run with every build the debugger tests are out of date and wouldn't provide the same level of coverage. I'd like to get our general debugger tests into CDT as most things can be tested the same way regardless of the debugger engine on the back-end.&lt;br /&gt;&lt;br /&gt;I've glossed over a lot of detail but I think that when looking at automated UI testing tools it's best to begin by deciding if you want to integrate them into a test driven development cycle. In many organizations testing is a completely segregated function done by people who aren't in a position to collaborate with developers on JUnit tests and so one of the record/playback/scripting tools is probably the best option. But for Carbide.c++ we've been able to use Abbot to extend the reach of our JUnit tests for a more integrated and comprehensive approach to testing and development. Now we just need to build more tests...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-8806527782804220780?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/8806527782804220780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=8806527782804220780' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/8806527782804220780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/8806527782804220780'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/03/automated-ui-testing_05.html' title='Automated UI Testing'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742435659113733626.post-6767552713487755041</id><published>2007-03-01T23:11:00.000-06:00</published><updated>2007-03-02T14:41:07.383-06:00</updated><title type='text'>Introduction</title><content type='html'>Welcome to my Nokia Carbide on Eclipse Blog. So who am I and what's going on with Nokia, Carbide, and Eclipse?&lt;br /&gt;&lt;br /&gt;I'm a software developer on the C++ tools team at Nokia. Nokia makes a ton of the little ringing vibrating things people call cell/mobile phones or more grandly “mobile devices”. A large and growing number of these are smartphones, little computers with an operating system, storage, user interface, and lots of connectivity. Most smartphones run &lt;a href="http://www.symbian.com/"&gt;Symbian&lt;/a&gt; OS with additional platform and UI services (&lt;a href="http://www.s60.com/"&gt;S60&lt;/a&gt; or &lt;a href="http://www2.blogger.com/www.uiq.com"&gt;UIQ&lt;/a&gt;) on top. It’s a real software platform that lets you install and run additional applications.&lt;br /&gt;&lt;br /&gt;These apps are built by software developers who need good tools. Carbide.c++ is Nokia’s C++ tool set for mobile software development. Carbide is used to produce mobile applications by the companies that make the phones and by the developer community that supports them.&lt;br /&gt;&lt;br /&gt;Carbide is built on Eclipse: our team takes the latest platform release, EMF, GEF, usually a pre-release version of CDT, plus a bit of DSDP-DD, then adds in a build system, debugger, user interface designer, performance tools, and documentation to produce a commercial product. As we develop Carbide our team contributes back to the Eclipse community. Nokia is a Eclipse Foundation strategic developer. I’m a committer on the CDT project.&lt;br /&gt;&lt;br /&gt;I’m looking forward to sharing our team’s experiences building Carbide and developing with Eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742435659113733626-6767552713487755041?l=nokiacarbideoneclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nokiacarbideoneclipse.blogspot.com/feeds/6767552713487755041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7742435659113733626&amp;postID=6767552713487755041' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6767552713487755041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742435659113733626/posts/default/6767552713487755041'/><link rel='alternate' type='text/html' href='http://nokiacarbideoneclipse.blogspot.com/2007/03/welcome-to-my-nokia-carbide-on-eclipse.html' title='Introduction'/><author><name>Ken Ryall</name><uri>http://www.blogger.com/profile/13632672249607934353</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_8MzFF6b5axY/SiQPKWkVgyI/AAAAAAAAALc/iUE3pkhVioA/S220/Ken+intro.jpg'/></author><thr:total>2</thr:total></entry></feed>
