<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Sébastien Bovo [Microsoft France]  : Silverlight</title><link>http://blogs.msdn.com/sbovo/archive/tags/Silverlight/default.aspx</link><description>Tags: Silverlight</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Debogage Silverlight avec WinDbg et SOS - C'est possible !</title><link>http://blogs.msdn.com/sbovo/archive/2009/10/30/debogagesilverlightavecwindbgetsos-cestpossible.aspx</link><pubDate>Fri, 30 Oct 2009 16:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895116</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/9895116.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=9895116</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=9895116</wfw:comment><description>&lt;p&gt;Tout comme les applications développées en .NET, qu'elles soient clientes (Windows Forms, WPF) ou serveurs (ASP.NET, Service Windows, WCF), les applications Silverlight ont aussi le droit d’être déboguées !&lt;/p&gt;  &lt;p&gt;Comment analyser un crash ou une fuite mémoire de nos applications riche Internet ? &amp;quot;Tout simplement&amp;quot; (façon de parler) de la même manière que pour toutes les autres... avec WinDbg.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Cela veut donc dire que ce que nous avons vu sur le débogage .NET avec WinDbg et SOS est valable : C’est un luxe de pouvoir s’appuyer sur ses acquis !&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si vous n’êtes pas familier avec WinDbg et SOS, je vous invite à lire mes précédents articles :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Premiers pas avec WinDbg -&amp;#160; &lt;a href="http://blogs.msdn.com/sbovo/archive/2009/06/19/premierpasavecwindbg.aspx"&gt;http://blogs.msdn.com/sbovo/archive/2009/06/19/premierpasavecwindbg.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Debogage .NET avec WinDbg et SOS - Threads - &lt;a href="http://blogs.msdn.com/sbovo/archive/2009/07/23/debogage-netavecwindbgetsos.aspx"&gt;http://blogs.msdn.com/sbovo/archive/2009/07/23/debogage-netavecwindbgetsos.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Debogage .NET avec WinDbg et SOS - Objects -&amp;#160; &lt;a href="http://blogs.msdn.com/sbovo/archive/2009/07/06/debogage-netavecwindbgetsos-objects.aspx"&gt;http://blogs.msdn.com/sbovo/archive/2009/07/06/debogage-netavecwindbgetsos-objects.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Debogage .NET avec WinDbg et SOS - Travaux Pratiques -&amp;#160; &lt;a href="http://blogs.msdn.com/sbovo/archive/2009/08/04/debogage-netavecwindbgetsos-travauxpratiques.aspx"&gt;http://blogs.msdn.com/sbovo/archive/2009/08/04/debogage-netavecwindbgetsos-travauxpratiques.aspx&lt;/a&gt; &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Allez zou… Démonstration !&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;1. Exemple d’application&lt;/h3&gt;  &lt;p&gt;Prenons un exemple le plus simple possible. Le but est de pouvoir être capable de visualiser nos appels de fonctions et nos objets. Pour ce faire, j’ai créé un nouvelle application Silverlight et modifié le code associé à la page par défaut (&amp;quot;MainPage.xaml.cs&amp;quot;) :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;J’utilise une liste d’objets d’un type particulier &amp;quot;Elt&amp;quot; &lt;strong&gt;&amp;gt; Ce qui me permettra de les différencier dans WinDbg &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Cette liste est rempli au démarrage et je marque un temps d’arrêt avec un message destiné à l’utilisateur &lt;strong&gt;&amp;gt; Ce qui me laissera le temps de lancer WinDbg et m’attacher au processus &lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Voici le code (mémorisez l’espace de nom)    &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;namespace ExempleSL                &lt;br /&gt;{                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class MainPage : UserControl                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private List&amp;lt;Elt&amp;gt; listeElements = new List&amp;lt;Elt&amp;gt;(); &lt;/p&gt;              &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public MainPage()                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (int i = 0; i &amp;lt; 10; i++)                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; listeElements.Add(new Elt() { Name = &amp;quot;elt&amp;quot; + DateTime.Now.Millisecond, Donnees = i });                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MessageBox.Show(&amp;quot;Continuer ?&amp;quot;);                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;              &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public class Elt                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string Name { get; set; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public int Donnees { get; set; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }                 &lt;br /&gt;}&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;C’est parti : lancement de l’application avec CTRL+F5 dans Visual Studio. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ExempleSL" border="0" alt="ExempleSL" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_8.png" width="377" height="299" /&gt; &lt;/p&gt;  &lt;p&gt;Le message apparait : nous pouvons lancer le débogueur pour regarder ce que nous avons en mémoire.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h3&gt;2. S’attacher au processus avec WinDbg&lt;/h3&gt;  &lt;p&gt;Les applications Silverlight s’exécutent dans le navigateur. Il ne faut donc pas chercher à prendre un dump ou s’attacher à ExempleSL.exe mais plutôt à iexplore.exe.&lt;/p&gt;  &lt;p&gt;Lançons WinDbg en tant qu’administrateur et attachons-nous au processus avec &amp;quot;FILE / Attach to process…&amp;quot; ou F6. Prenons iexplore.exe.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WinDbg" border="0" alt="WinDbg" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_11.png" width="482" height="138" /&gt; &lt;/p&gt;  &lt;p&gt;Ensuite, comme nous le faisons à l’accoutumé, 3 étapes :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Renseignement du &lt;strong&gt;serveur de symboles&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;.sympath SRV*c:\symbols*http://msdl.microsoft.com/download/symbols&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Chargement des symboles&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;.reload&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Chargement de l’extension SOS&lt;/strong&gt; pour Silverlight &lt;/li&gt; &lt;/ul&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;.load &lt;span style="background: yellow; mso-highlight: yellow"&gt;c:\Program Files (x86)\Microsoft Silverlight\3.0.40818.0\sos&lt;/span&gt;&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Notez bien que nous avons une version sos.dll par version du Framework dans C:\windows\Microsoft.NET\Framework\vX et un une version sos.dll par version de Silverlight.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;3. Deboguer&lt;/h3&gt;  &lt;p&gt;La liste des commandes disponibles de SOS est donnée par    &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;!help&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Windbg !help" border="0" alt="Windbg !help" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_17.png" width="550" height="794" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pour savoir quel code est en cours d’exécution dans notre application, nous lançons une commande qui s’exécutera sur tous les threads du processus. Cette commande est &amp;quot;&lt;strong&gt;&lt;font color="#008000"&gt;!ClrStack&lt;/font&gt;&lt;/strong&gt;&amp;quot;. Elle nous permet d’obtenir la pile d’appel d’un thread.&amp;#160; &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;             &lt;p&gt;~*e !ClrStack&lt;/p&gt;           &lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Beaucoup de threads ne sont pas en cours d’exécution de code Silverlight :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_21.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_thumb_7.png" width="550" height="82" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Mais le thread 5, l’est :&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_19.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Windbg !ClrStack" border="0" alt="Windbg !ClrStack" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_thumb_6.png" width="550" height="89" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;ESP&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EIP&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;02abd4f4 77cd9a94 [NDirectMethodFrameStandalone: 02abd4f4] MS.Internal.XcpImports.MessageBox_ShowCoreNative(IntPtr, System.String, System.String, UInt32, Int32 ByRef)             &lt;br /&gt;02abd510 03fd84f2 MS.Internal.XcpImports.MessageBox_ShowCore(System.String, System.String, UInt32)             &lt;br /&gt;02abd52c 03fd8449 System.Windows.MessageBox.ShowCore(System.String, System.String, System.Windows.MessageBoxButton)             &lt;br /&gt;02abd55c 03fd835c &lt;span style="background: yellow; mso-highlight: yellow"&gt;System.Windows.MessageBox.Show&lt;/span&gt;(System.String)             &lt;br /&gt;02abd56c 03f40376 &lt;span style="background: yellow; mso-highlight: yellow"&gt;ExempleSL.MainPage..ctor&lt;/span&gt;()             &lt;br /&gt;02abd5c8 03f401fe &lt;span style="background: yellow; mso-highlight: yellow"&gt;ExempleSL.App.Application_Startup&lt;/span&gt;(System.Object, System.Windows.StartupEventArgs)             &lt;br /&gt;02abd5e0 03fa69c9 System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32, System.Delegate, System.Object, System.Object)             &lt;br /&gt;02abd6a0 03fa3b04 MS.Internal.JoltHelper.FireEvent(IntPtr, IntPtr, Int32, System.String)             &lt;br /&gt;02abd884 694917b0 [GCFrame: 02abd884]             &lt;br /&gt;02abd940 694917b0 [ContextTransitionFrame: 02abd940]             &lt;br /&gt;02abda38 694917b0 [UMThkCallFrame: 02abda38]&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Nous voyons donc noir sur blanc, le &amp;quot;cheminement&amp;quot; d’exécution.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;D’abord nous avons le démarrage de l’application avec &amp;quot;ExempleSL.App.Application_Startup&amp;quot; &lt;/li&gt;    &lt;li&gt;Puis le constructeur de la clase MainPage (&amp;quot;ExempleSL.MainPage..ctor&amp;quot;) &lt;/li&gt;    &lt;li&gt;Et enfin, l’affichage de notre message : &amp;quot;System.Windows.MessageBox.Show&amp;quot; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Est-il possible de visualiser nos objets en mémoire ?&lt;/p&gt;  &lt;p&gt;Oui, la méthode &amp;quot;&lt;font color="#008000"&gt;&lt;strong&gt;!DumpHeap&lt;/strong&gt;&lt;/font&gt;&amp;quot; nous donne tous les objets .NET en mémoire. Le paramètre &amp;quot;-type&amp;quot; nous permet de filtrer sur les objets dont le nom de la classe contient &amp;quot;ExempleSL&amp;quot;. &lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;!DumpHeap -stat -type ExempleSL&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_25.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WinDbg !DumpHeap" border="0" alt="WinDbg !DumpHeap" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/DebogageSilverlightAvecWinDbgEtSOSCestPo_135FB/image_thumb_9.png" width="550" height="69" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom: 1px dotted; border-left: 1px dotted; border-top: 1px dotted; border-right: 1px dotted" bgcolor="#e1eaff" bordercolor="#000080"&gt;&lt;font face="Courier New"&gt;           &lt;p&gt;total 13 objects              &lt;br /&gt;Statistics:               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MT&amp;#160;&amp;#160;&amp;#160; Count&amp;#160;&amp;#160;&amp;#160; TotalSize Class Name               &lt;br /&gt;039d3dcc&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 24 System.Collections.Generic.List`1[[ExempleSL.MainPage+Elt, ExempleSL]]               &lt;br /&gt;039d3868&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 44 ExempleSL.App               &lt;br /&gt;039d3c24&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 84 ExempleSL.MainPage               &lt;br /&gt;039d3d6c&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 160 ExempleSL.MainPage+Elt&lt;/p&gt;         &lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Nous avons bien&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Notre liste &lt;/li&gt;    &lt;li&gt;1 objet pour notre application &lt;/li&gt;    &lt;li&gt;1 objet pour notre page &lt;/li&gt;    &lt;li&gt;Les 10 éléments de la liste &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;cqfd :-)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895116" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Debogage/default.aspx">Debogage</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/sbovo/archive/tags/WinDbg/default.aspx">WinDbg</category></item><item><title>Silverlight 2 est prêt !</title><link>http://blogs.msdn.com/sbovo/archive/2008/10/14/silverlight-est-pr-t.aspx</link><pubDate>Tue, 14 Oct 2008 11:39:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8999187</guid><dc:creator>Sebastien Bovo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sbovo/comments/8999187.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sbovo/commentrss.aspx?PostID=8999187</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sbovo/rsscomments.aspx?PostID=8999187</wfw:comment><description>&lt;p&gt;A vos marques... Prêt... &lt;strong&gt;Partez&lt;/strong&gt; :-)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://www.microsoft.com/silverlight/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SilverlightRTW" border="0" alt="SilverlightRTW" src="http://blogs.msdn.com/blogfiles/sbovo/WindowsLiveWriter/Silverlightestprt_8EB4/image_3.png" width="479" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999187" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sbovo/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>