Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "DSDP/DD/Face-to-face Alameda 14-18-May-2007"
(→Agenda) |
(→Notes/Summary) |
||
Line 106: | Line 106: | ||
=== Monday === | === Monday === | ||
+ | ; Architectural discussions: | ||
+ | : After making sure that everyone had the DSF plugins checked out into their workspace, we proceeded with the architectural discussions. There were a couple of diagrams in the agenda, but most of the discussion centered around stepping through code and drawing white-board diagrams. | ||
+ | ; GDB discussions: | ||
+ | : Jim Blandy, a GDB maintainer from CodeSourcery, gave an high-level presentation of embedded debugging with GDB and answered (a lot of) questions about GDB. His main points were: | ||
+ | :* GDB in general is open to 'incremental' patches as long as they are not too architecture specific and as long as they don't violate the architectural boundries, which took a lot of refactoring effort to establish. | ||
+ | :* With respect to MI interface in general, given current GDB design, there are a lot of improvments that can be made at relatively little effort. Also, GDB is looking for someone who could commit to long term maintanance of the MI interface. | ||
+ | :* With respect to our specific questions about MI interface in the agenda Jim had the following comments: | ||
+ | :*; Is GDB going to support out-of-band events indicating threads starting/exiting? : GDB currently generates such events for the CLI interface. It could be extended to generate similar notifications in the MI interface. | ||
+ | :*; In expression/variable managment, what is the cost of creating/deleting variables? : GDB maintains a table of "open" variables. Creating/deleting a var object simply adds/removes an entry in this table. Thus a client could continually create/delete variables without incurring much overhead beyond the additional communication processing. | ||
+ | :*; When sending CLI commands, is there anyway to have GDB return the equivalent GDB/MI result, or generate an out-of-band event corresponding to data changed? : After some discussion, we concluded that in order to properly support a CLI interface GDB would need to generate out-of-band events for all state changes, such as: running events, breakpoints changed events, register/memory/variable write events, etc. At first sight, Jim couldn't see any architectural problems with such a change. | ||
+ | :* Couple of additional quesions came up about GDB capabilities: | ||
+ | :*; Is GDB going to support multi-core debugging? : There is some progress in re-architecting GDB towards this goal, but this feature is still long way off. | ||
+ | :*; Is GDB going to support debugging individual threads? I.e. suspending a single thread while other threads are still running? : There are architectural issues with this and currently this capability is not being developed. | ||
=== Tuesday === | === Tuesday === | ||
+ | |||
=== Wednesday === | === Wednesday === |
Revision as of 17:39, 21 May 2007
The purpose of this meeting is to continue work on the DSF/GDBmi reference implementation staffed by Ericsson. This meeting will be very technical in nature and will focus on coding rather than presentations. The meeting is open to all, but please see the prerequisites below.
Contents
Date
Monday May 14 2007 to Friday May 18 2007
Hotel
Marina Village Inn
1151 Pacific Marina
Alameda, CA 94501
Water Front Room with Queen or King at special rate of 99$. The room has to be booked by phone and you need to specify you are visiting Wind River. This hotel is a short walk from the Alameda campus.
+1 800 345-0304 or +1 510 523-9450
Hotel Link Map
Location
Wind River Corporate Headquarters
500 Wind River Way
Alameda, CA, 94501
Map
Please come to the front desk in building 500, and ask for Pawel Piech, or for DSDP/DSF meeting.
Prerequisites
- Installed on laptop Linux SUSE Enterprise Server 9 or 10
- Install Java 5, Eclipse 3.3 M6, CDT 4.0(head from CVS), DSF 0.9(head from CVS), GDB 6.6 all on Linux
- Read DSF documentation
- Make the connection work between DSF and GDB
- Understand the DSF API (reading the code)
- Attend the phone conference on May 3 to ensure the above steps where successfully done
A Windows configuration could be use on non-Linux laptop:
- Java 5, Eclipse 3.3 M6, CDT 4.0(head from CVS), DSF 0.9(head from CVS), MinGW GDB 5.2.1 (could also try with 6.3.2) all on Windows
Agenda
Monday
DSF and GDB/MI architecture knowledge transfer
- Big picture of how DSF fits in into Eclipse.
- Big picture of what has to be done of the GDB/MI implementation
- Use cases:
- Follow one command from client through service API to the back end and back to service and client.
- Stepping sequence walk through
Incompatibilities between DSF and the functionality provided by GDB
- Is GDB going to support out-of-band events indicating threads starting/exiting?
- In expression/variable managment, what is the cost of creating/deleting variables.
- When sending CLI commands, is there anyway to have GDB return the equivalent GDB/MI result, or generate an out-of-band event corresponding to data changed?
Tuesday, Wednesday, Thrusday
Coding workshop: break up into groups of 2 to 4 and tackle design and implementation of a DSF service. Possible tasks for workshop:
- Complete the expression service implementation in order to populate the variables and watch views
- Extend the run control service to support multiple threads
- Implement the memory service and connect the memory view to it
Thrusday
DSF Development Formalities:
- Filing Bugs
- Subscribing to bug email notifications
- Unit tests
- Coding conventions
- Keeping consistent coding style within modules
- TODO's
- Compiler warnings
Friday
- Create a project plan (must have)
- List of tasks for the GDB/MI reference implementation
- Short discussion on DSF improvements to support embedded system profiling, to identify whether DSF would be a good fit for this problem
Attendees
- Pawel Piech, Wind River
- Randy Rohrbach, Wind River
- Ted Williams, Wind River
- Alf Larsson, Ericsson (CPP)
- Veenu Verma, Ericsson (TSP)
- Francois Chouinard, Ericsson (TSP)
- Dominique Toupin, Ericsson (R&D PM&T)
- Conor White, Ericsson (R&D PM&T)
- Jim Blandy, CodeSourcery
- Eugene Tassarov, Wind River
- Stuart Fullmer, MontaVista
Other names will be added as we get confirmation.
Documentation to help get familiar with Eclipse Debugging and DSF
Unfortunately there is a long and steep learning curve when starting to develop debuggers for Eclipse. On the upside there is a lot of excellent documentation to help with this task. I recommend looking at these materials in the order listed below.
- http://www.eclipse.org/articles/Article-Launch-Framework/launch.html
- Article describing the Eclipse launch framework and a walk-through example of how to use it. Launch framework is a rather un-usual feature of Eclipse debugger, which causes some confusion to a lot of new Eclipse users and developers. Understanding the launch framework is essential in making sense of the overall debugger framework.
- http://www.eclipse.org/articles/Article-Debugger/how-to.html
- This article walks through creating a simple debugger with basic features using the "standard" eclipse debug model. Although the provisional "flexible hierarchy" interfaces introduced in Eclipse 3.2 make it possible to by-pass the standard model and this is what DSF does, understanding the standard debug model is still essential for backward compatibility and interoperability with third party tools.
- http://www.eclipsecon.org/2007/index.php?page=sub/&id=3701
- Presentation from a tutorial on Eclipse debugging from EclipseCon 2007. It contains a presentation with a very broad overview (214 slides) of debugger features, as well as a few examples on general debugger features, memory view, and flexible hierarchy. This tutorial is a lot to digest at one time, but it's also a very valuable resource in learning to use the debug framework.
- http://dsdp.eclipse.org/help/latest/index.jsp?topic=/org.eclipse.dd.dsf.doc/docs/dsf_white_paper.html
- DSF online documentation. The documents under this link are somewhat out of date with respect to specific package and class names, but in principle they are very relevant.
- White Paper - Paper describing goals technology goals and principles
- Services Model - Design document describing the framework for declaring and using services in DSF.
- Concurrency Model - Design document describing the threading model of DSF
- Data Model - Design document describing the data model to be used with DSF. This document is least complete of the design document, but it does touch on some of the important topics. It is best to study the flexible hierarchy framework and examples before looking at the DSF Data Model.
- GDB/MI Implementation Setup Guide - A brief list of steps to install and run DSF GDB/MI implementation.
- http://www.eclipse.org/downloads/download.php?file=/dsdp/dd/2007-1-9_Toronto_DSF_ViewModel.ppt
- Presentation further describing the DSF Data/View model. This presentation was given at the last DD meeting in Toronto on January 10th, 2007. It gives an overview of the DSF integration with flexible hierarchy framework.
- http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.dd.dsf/plugins/org.eclipse.dd.dsf.examples/?root=DSDP_Project
- Examples of use of DSF framework features. Studying these examples is the easiest way to get started on understanding and using DSF.
- http://sourceware.org/gdb/current/onlinedocs/gdb_25.html#SEC232
- GDB/MI documentation
Notes/Summary
I made the mistake of not taking notes as we went along, so I'm in the unfortunate position of writing this summary as a retrospective. If anyone has additional notes or comments, please add them to this section.
Monday
- Architectural discussions
- After making sure that everyone had the DSF plugins checked out into their workspace, we proceeded with the architectural discussions. There were a couple of diagrams in the agenda, but most of the discussion centered around stepping through code and drawing white-board diagrams.
- GDB discussions
- Jim Blandy, a GDB maintainer from CodeSourcery, gave an high-level presentation of embedded debugging with GDB and answered (a lot of) questions about GDB. His main points were:
- GDB in general is open to 'incremental' patches as long as they are not too architecture specific and as long as they don't violate the architectural boundries, which took a lot of refactoring effort to establish.
- With respect to MI interface in general, given current GDB design, there are a lot of improvments that can be made at relatively little effort. Also, GDB is looking for someone who could commit to long term maintanance of the MI interface.
- With respect to our specific questions about MI interface in the agenda Jim had the following comments:
- Is GDB going to support out-of-band events indicating threads starting/exiting?
- GDB currently generates such events for the CLI interface. It could be extended to generate similar notifications in the MI interface.
- In expression/variable managment, what is the cost of creating/deleting variables?
- GDB maintains a table of "open" variables. Creating/deleting a var object simply adds/removes an entry in this table. Thus a client could continually create/delete variables without incurring much overhead beyond the additional communication processing.
- When sending CLI commands, is there anyway to have GDB return the equivalent GDB/MI result, or generate an out-of-band event corresponding to data changed?
- After some discussion, we concluded that in order to properly support a CLI interface GDB would need to generate out-of-band events for all state changes, such as: running events, breakpoints changed events, register/memory/variable write events, etc. At first sight, Jim couldn't see any architectural problems with such a change.
- Couple of additional quesions came up about GDB capabilities:
- Is GDB going to support multi-core debugging?
- There is some progress in re-architecting GDB towards this goal, but this feature is still long way off.
- Is GDB going to support debugging individual threads? I.e. suspending a single thread while other threads are still running?
- There are architectural issues with this and currently this capability is not being developed.