<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-9566251</atom:id><lastBuildDate>Fri, 01 Nov 2024 10:33:55 +0000</lastBuildDate><category>DILE</category><category>tutorial</category><category>Singapore</category><category>dump debugging</category><category>personal</category><category>weekly build</category><category>.NET 4.0</category><category>ILSpy</category><category>Windows Developer Power Tools</category><category>logo</category><title>Zsozso&#39;s Blog</title><description>Learning MSIL, CorDbLib and .NET</description><link>http://pzsolt.blogspot.com/</link><managingEditor>noreply@blogger.com (Zsozso)</managingEditor><generator>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-2366940166537979491</guid><pubDate>Sat, 30 Jul 2011 17:45:00 +0000</pubDate><atom:updated>2011-07-30T19:45:12.204+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><title>DILE tutorial, part 5: Thread and Call Stack Panel</title><description>As I promised in the last entry, this time I&#39;ll explain why DILE has to load assemblies to make debugging work. But first a little history. When I started to write DILE I didn&#39;t know much about the Unmanaged Metadata API or the debugger API. In fact, I started DILE because I wanted to learn about these. Therefore during the development of the &quot;disassembler&quot; part I really didn&#39;t think of how debugging will work. But in the end I found out that I was quite lucky...&lt;br /&gt;
&lt;br /&gt;
Using the Unmanaged Metadata API a lot of information can be read from assemblies similarly to Reflection. Each of these items (methods, types, properties, events, etc.) are identified by tokens which are 4 byte integers. And the debugger API is using these tokens as well. For example, the debugger API will just tell the type definition token of variables but then its the debugger&#39;s responsibility to find the matching metadata and make sense of it. If the debugger wants to ask the debugger API to evaluate a field for example, then again the debugger must give the field&#39;s token to the API. And luckily, I have all this information since I disassemble loaded assemblies anyway.&lt;br /&gt;
&lt;br /&gt;
Hopefully this explains why you can&#39;t evaluate objects which reside in assemblies that are not loaded in DILE or why the call-stack is not complete until all necessary assemblies are loaded.&lt;br /&gt;
&lt;br /&gt;
Obviously, Visual Studio needs such metadata information as well. And during debugging you can even see how VS is loading assemblies and analyzing them. One nice touch in DILE though is that loading all assemblies is not required. Of course, you can do it by enabling the &quot;Warn if the debuggee loads an assembly which is not added to the DILE project?&quot; option. But I prefer disabling this option and rather loading assemblies during debugging whenever I need them. DILE makes this quite easy by displaying an error message when an assembly is missing. In such cases usually you can just right-click the error message and choose &quot;Add module to project&quot; from the context menu to load the required assembly.&lt;br /&gt;
&lt;br /&gt;
Back to the tutorial. I&#39;ll explain two panels this time. The first is the thread panel.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ThreadsPanel/ThreadsPanel_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;57&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ThreadsPanel/ThreadsPanel_small.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This panel simply lists all managed threads in the debuggee process. The active thread can be changed by double-clicking on the thread or by right-clicking and choosing &quot;Change current thread&quot; from the context-menu. In both cases the selected thread&#39;s state will be reflected in the UI which means that the thread&#39;s call stack, variables, arguments, etc. will be displayed (much like in Visual Studio).&lt;br /&gt;
&lt;br /&gt;
And if you see a &quot;&amp;lt;definition of the Thread class is not loaded&amp;gt;&quot; message in the Name column then don&#39;t forget to load mscorlib.dll. This error message means that DILE was not able to retrieve the name of the thread because the necessary mscorlib assembly is not added to the project. The reason is explained above.&lt;br /&gt;
&lt;br /&gt;
The second panel is more interesting. This is the Modules Panel.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ModulesPanel/ModulesPanel_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;57&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ModulesPanel/ModulesPanel_small.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
It shows a list of all assemblies/modules loaded by the debuggee process. This panel allows loading assemblies by double-clicking them or right-clicking and selecting &quot;Add module to the project&quot; from the context menu.&lt;br /&gt;
&lt;br /&gt;
If the debuggee loads assemblies from byte arrays or creates them on-the-fly (using Reflection.Emit or XSLT transformation or compiled regular expressions and so on) then those will be listed here as well. Assemblies which exist only in memory can be loaded as well just like any other assembly. In this case DILE will do something very nasty: it will load the assembly from the debuggee process by directly reading its memory. Such assemblies can be used just like any other assemblies otherwise: they can be disassembled, debugged, you can put breakpoints in their methods, etc. However, there is one small difference: when the debuggee stops running then in-memory assemblies will disappear from the DILE project as well since these exist only while the debuggee is alive and running.</description><link>http://pzsolt.blogspot.com/2011/07/dile-tutorial-part-5-thread-and-call.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-3148218129469270283</guid><pubDate>Sat, 04 Jun 2011 15:58:00 +0000</pubDate><atom:updated>2011-06-04T17:58:55.245+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><title>DILE tutorial, part 4: Information, Debug Output and Log Message Panel</title><description>The time has come to start to talk about debugging a little bit.&lt;br /&gt;
&lt;br /&gt;
In the bottom of the main window of DILE several panels can be found. The leftmost panel is the Information Panel.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/InformationPanel/InformationPanel_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;58&quot; src=&quot;http://dile.sourceforge.net/Tutorial/InformationPanel/InformationPanel_small.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Basically DILE uses this panel for logging. You will see several lines here when an assembly is loaded and you can see error messages here as well if something went wrong. It&#39;s worth taking a look at this panel every once in a while especially if something unexpected happens.&lt;br /&gt;
&lt;br /&gt;
The second panel which is called Debug Output Panel is lot more exciting.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/DebugOutputPanel/DebugOutputPanel_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;58&quot; src=&quot;http://dile.sourceforge.net/Tutorial/DebugOutputPanel/DebugOutputPanel_small.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I don&#39;t want to go into too much detail but roughly debugging works the following way. The Debugger API defines a set of interfaces (like&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms232496.aspx&quot;&gt;ICorDebugManagedCallback&lt;/a&gt;) that debuggers have to implement. When debugging starts debuggers have to create an instance of their own implementation and give that to the Debugger API. Later during the debugging process the API will call methods on this object and this is communication between the API and the debugger is solved.&lt;br /&gt;
&lt;br /&gt;
In the Debug Output Panel DILE displays what calls it receives from the underlying Debugger API exactly. So here you can see messages corresponding to the different events like an assembly was loaded, a code step command was completed or a thread was created. When an event is clicked in the left-side then all corresponding details will be displayed in the right-side of the panel.&lt;br /&gt;
This panel is not the most useful one but it can definitely be interesting. :-)&lt;br /&gt;
&lt;br /&gt;
The third panel will be familiar I think. This is the place where debug messages sent by debugge processes are displayed.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/LogMessagePanel/LogMessagePanel_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;58&quot; src=&quot;http://dile.sourceforge.net/Tutorial/LogMessagePanel/LogMessagePanel_small.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
That&#39;s it for now. Next time I&#39;ll continue explaining the remaining panels and the reason why DILE needs so many loaded assemblies for debugging.</description><link>http://pzsolt.blogspot.com/2011/06/dile-tutorial-part-4-information-debug.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-2818146541351085305</guid><pubDate>Mon, 09 May 2011 01:58:00 +0000</pubDate><atom:updated>2011-05-09T03:58:59.362+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><title>DILE tutorial, part 3: Quick Search and Start Page</title><description>This time I&#39;ll talk about 2 different parts of the UI. The first one is the Quick Search panel. This panel can be found next to the Project Explorer and it helps with searching for different kind of disassembled items. Let&#39;s use the Dile.exe and Dile.Debug.dll files once again for this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/QuickSearch/QuickSearch_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/QuickSearch/QuickSearch_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The idea is not new. There is a text box in the top of the panel where full or partial name of items can be entered and DILE will list all disassembled objects that match the entered text. The searching algorithm is quite simple as it just simply looks for items where the name contains the entered text (so regular expressions are not supported although if somebody really needs it...). Names are case-sensitive so make sure you write your search term with proper casing. Searching is done on a separate thread so it can be stopped anytime by pressing the Escape key. Matched items will appear continuously as this searching thread finds them.&lt;br /&gt;
&lt;br /&gt;
By default only Type Definitions will be displayed but this can be easily changed by clicking on the &quot;...&quot; button next to the text box which will&amp;nbsp;bring up&amp;nbsp;the following window:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/QuickSearch/Settings_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/QuickSearch/Settings_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Here the searched members can be configured differently for all assemblies. Usually searching for Method Definitions and Properties can be quite useful.&lt;br /&gt;
&lt;br /&gt;
Obviously, searching for items wouldn&#39;t be very useful if we couldn&#39;t open them. So just right-click on any found item and the following context menu will be displayed:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/QuickSearch/ContextMenu_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/QuickSearch/ContextMenu_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;These are the options:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Display item: the disassembled code of the selected item will be displayed in a text panel on the left side.&lt;/li&gt;
&lt;li&gt;Locate in Project Explorer: the Project Explorer will be brought forward and the selected item will be shown in it. All necessary parent nodes will be expanded to be able to navigate to the item.&lt;/li&gt;
&lt;li&gt;Copy to clipboard: the name, type or both of the selected item will be copied to the clipboard.&lt;/li&gt;
&lt;li&gt;Display text...: the name, type or both of the selected item will be displayed in the Text Viewer window.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;The Quick Search tool can be really handy when assemblies contain lots of items and&amp;nbsp;navigating the&amp;nbsp;Project Explorer becomes a bit confusing. So spend some time on learning how to use it, it can save lot of time for you in the future. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The second part of the UI that I wanted to talk about is the Start Page. This is the panel that occupies most of the window when DILE starts.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/StartPage/StartPage_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/StartPage/StartPage_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I&#39;m sure this will be familiar as well. The page contains 6 sections:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Recent Projects: by default, the last 10 DILE projects that were opened are listed here.&lt;/li&gt;
&lt;li&gt;Recent Assemblies: by default, the last 10 assemblies that were opened are listed here.&lt;/li&gt;
&lt;li&gt;Recent Memory Dump Files: by default, the last 10 memory dump files that were opened are listed here.&lt;/li&gt;
&lt;li&gt;Project News: SourceForge RSS feed that contains news about the DILE project (rarely updated).&lt;/li&gt;
&lt;li&gt;Latest Releases: SourceForge RSS feed about the latest DILE releases. You can check here whether there is any new version that can be downloaded.&lt;/li&gt;
&lt;li&gt;Blog: RSS feed of this blog.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;For the last 3 sections (RSS feeds) DILE simply sends web requests to get the content of the RSS feeds, then formats the retrieved XML using XSLT and displays them in 3 separate web controls. This is a quite simple and easy solution however it has a few problems. The smaller problem is that since web controls are used they allow you to navigate to other pages within DILE which is quite weird. But the bigger problem is that web controls don&#39;t really support drag&amp;amp;drop operations. The best I could achieve is hijacking the drop operation and getting 1 file name from the list of&amp;nbsp;dropped files. Therefore if you want to open more than one assemblies by dropping them on DILE then please try to avoid the web control areas. I think in the future I&#39;ll replace these web controls with custom controls&amp;nbsp;just to solve this drag&amp;amp;drop issue.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Ok, that&#39;s all for now. I hope I&#39;ve managed to tell a few tricks again. :-)&lt;/div&gt;&lt;/div&gt;</description><link>http://pzsolt.blogspot.com/2011/05/dile-tutorial-part-3-quick-search-and.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-6762165666042341837</guid><pubDate>Sun, 01 May 2011 15:28:00 +0000</pubDate><atom:updated>2011-05-01T17:28:17.063+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><title>DILE tutorial, part 2: Project Explorer</title><description>Let&#39;s start to dissect the UI of DILE. One of the most important parts is definitely the Project Explorer. This is the place where all loaded assemblies can be viewed and their contents can be browsed.&lt;br /&gt;
&lt;br /&gt;
When DILE is started it creates a new, empty project automatically. Therefore the Project Explorer is empty first:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/EmptyProjectExplorer_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: left;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/EmptyProjectExplorer_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Right-click on the &quot;New project&quot; node and a simple context menu will be displayed:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/ProjectContextMenu_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/ProjectContextMenu_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The options are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Add assembly...: This option will open the usual Windows Open File Dialog where one or more assemblies can be selected. Obviously, DILE will load all the selected assemblies and their content will be displayed in the Project Explorer (see later).&lt;/li&gt;
&lt;li&gt;Reload all assemblies: DILE does not hold lock on any loaded assembly therefore it&#39;s safe to add the output assembly of your Visual Studio project. Whenever you make changes and recompile your assembly, just choose this option to reload all the assemblies which are in the Project Explorer so DILE can pick up the latest version. However, reloading assemblies will not affect currently displayed IL code. This is both kind of a bug and feature. I thought about fixing it but in some cases I found it useful that I could compare the old and new version of the IL code of an element.&lt;/li&gt;
&lt;li&gt;Properties...: This option opens the project properties windows. I&#39;ll explain that window in a later post.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Ok, so once we load an assembly, it appears in the Project Explorer. Just for fun, let&#39;s load Dile.exe and Dile.Debug.dll:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/ProjectExplorerWithAssemblies_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/ProjectExplorerWithAssemblies_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I&#39;m sure this view is familiar from other decompilers and disassemblers. You can see all loaded assemblies and their content in a nice tree view. There are special nodes with the name &quot;definition&quot; which allow you to open the definition of the parent node. So for example, the first &quot;definition&quot; node in the screenshot above can be used to open the assembly definition. While the second is for opening the definition of the module. Roughly, the tree structure is something like this:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Project&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Assembly&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Exported Types: types that are forwarded using the&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.typeforwardedtoattribute.aspx&quot; target=&quot;_blank&quot;&gt;TypeForwardedTo attribute&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Manifest Resources&lt;/li&gt;
&lt;li&gt;Module References: unmanaged module references.&lt;/li&gt;
&lt;li&gt;References: assembly references.&lt;/li&gt;
&lt;li&gt;Files: referenced files&lt;/li&gt;
&lt;li&gt;Namespaces: all namespaces of the assembly are listed here. Often, there is a special namespace called: &amp;lt;no namespace&amp;gt;. In some cases compilers generate classes without any namespace and all those classes will be listed here.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Types: all types that belong to the parent namespace will be listed here.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Events: events of the type, if there are any.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Add/remove methods of the parent event.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Fields: fields of the type, if there are any.&lt;/li&gt;
&lt;li&gt;Methods: methods of the type, if there are any.&lt;/li&gt;
&lt;li&gt;Properties: properties of the type, if there are any.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Get/set/let/other methods of the parent property.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;In general, leaf nodes can be double-clicked and related disassembled code will be displayed in a text viewer. For example, double clicking the get() method of a property will display the IL code associated with that method.&lt;br /&gt;
&lt;br /&gt;
A few of the nodes also have quite important associated context menus. Right-clicking on an assembly will bring up the following menu:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/AssemblyContextMenu_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/AssemblyContextMenu_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The options are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Full path of the assembly: Clicking it won&#39;t do anything, it&#39;s displayed only as information.&lt;/li&gt;
&lt;li&gt;Copy path to clipboard&lt;/li&gt;
&lt;li&gt;Display path...: The full path will be displayed in the Text Viewer window. I&#39;ll talk about this window later.&lt;/li&gt;
&lt;li&gt;Set as startup assembly: This option marks the assembly as the startup assembly and enables debugging. Startup assemblies are marked with a red color and italic font-style. I&#39;ll explain debugging in another blog post, it&#39;s quite a big subject.&lt;/li&gt;
&lt;li&gt;Reload assembly: This option allows reloading only the selected assembly.&lt;/li&gt;
&lt;li&gt;Remove assembly: Removes the assembly from the project (and the Project Explorer as well, of course).&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;A special context menu is available for assembly references as well:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/ReferenceContextMenu_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/ProjectExplorer/ReferenceContextMenu_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Options:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Full path of the referenced assembly: The full path is determined during assembly loading and not during debugging therefore the path might be incorrect (for example, an&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx&quot;&gt;AppDomain.AssemblyResolve&lt;/a&gt;&amp;nbsp;event handler can easily return a different assembly during runtime). Again, clicking this option does not do anything.&lt;/li&gt;
&lt;li&gt;Copy path to clipboard&lt;/li&gt;
&lt;li&gt;Display path...: Displays the full path of the referenced assembly in the Text Viewer window.&lt;/li&gt;
&lt;li&gt;Open reference in project: Loads the referenced assembly using the determined full path and adds it to the project (and thus to the Project Explorer).&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;I think that&#39;s all I can tell about the Project Explorer. Hopefully I have managed to show a few new options and/or explain how some of them really work. If you have any questions, just let me know. :-)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://pzsolt.blogspot.com/2011/05/dile-tutorial-part-2-project-explorer.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-1774388203607440218</guid><pubDate>Sat, 23 Apr 2011 17:32:00 +0000</pubDate><atom:updated>2011-04-23T19:32:04.588+02:00</atom:updated><title>DILE tutorial, part 1: Main Window</title><description>As I promised in my previous post, I&#39;ll try to spend the next few weeks on writing a little bit about the user interface of DILE. Hopefully this will be useful for many people.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s start with the main window. Once Dile.exe is started, the following screen appears:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://dile.sourceforge.net/Tutorial/MainWindow/MainWindow_large.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dile.sourceforge.net/Tutorial/MainWindow/MainWindow_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The numbers are pointing at the following important areas:&lt;br /&gt;
1. Main menu. Just the usual stuff. In a later post I&#39;ll explain the most interesting options like Settings.&lt;br /&gt;
2. Toolbar. Most buttons in the toolbar are enabled only during debugging. From left to right:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Run: Starts or resumes the debuggee.&lt;/li&gt;
&lt;li&gt;Pause: Pauses the debuggee if it&#39;s currently running.&lt;/li&gt;
&lt;li&gt;Stop: Stops the debuggee (which means killing the debuggee process).&lt;/li&gt;
&lt;li&gt;Detach: Detaches from the debuggee (which means leaving the debuggee process running).&lt;/li&gt;
&lt;li&gt;Ignore exception: This button is enabled when the debuggee is paused at an exception. Using this button DILE can be instructed to ignore all similar exceptions in the future, no matter where they are thrown.&lt;/li&gt;
&lt;li&gt;Ignore exception at the current location: This is one of my favorite features in DILE. I wish all debuggers had it. This button is also enabled only when the debuggee is paused at an exception. However, pressing this button means that DILE will ignore exceptions thrown only at the current address. For example, if you know that a FileNotFoundException will be thrown every time your application starts because you don&#39;t use &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bk3w6240(v=vs.80).aspx&quot;&gt;XML Serializer assemblies&lt;/a&gt;&amp;nbsp;then you can press this button when Reflection throws this exception. However, if a FileNotFoundException is thrown anywhere else (let&#39;s say by a &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/b9skfh7s.aspx&quot;&gt;File.Open&lt;/a&gt;&amp;nbsp;call) then DILE will still pause the debugge. This gives you a much finer control over which exceptions you&#39;re interested in.&lt;/li&gt;
&lt;li&gt;Decimal/hexadecimal format: This button changes the way DILE displays numbers.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;3. Start Page: The idea should be familiar from Visual Studio. The page contains the following 6 areas:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Recent Projects: List of recently opened projects (.dileproj files). By default, maximum the last 10 projects will be remembered.&lt;/li&gt;
&lt;li&gt;Recent Assemblies: List of recently opened assemblies. Again, maximum the last 10 assemblies will be displayed here by default.&lt;/li&gt;
&lt;li&gt;Recent Memory Dump Files: List of recently opened memory dump files (.dmp). The default limit is 10 here as well.&lt;/li&gt;
&lt;li&gt;Project News: Latest DILE related project news from Sourceforge.&lt;/li&gt;
&lt;li&gt;Latest Releases: List of latest DILE releases that I upload to Sourceforge. You will see all new weekly builds here.&lt;/li&gt;
&lt;li&gt;Blog: Latest entries in my blog.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;The last 3 parts are displayed by web browser controls so drag&amp;amp;dropping on them doesn&#39;t work very well. If you want to open projects, assemblies or dump files by dragging &amp;amp; dropping them on DILE then please try to avoid these 3 areas. In the future I&#39;ll try to replace these web controls to solve this issue.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;4. Panels: There are lots of panels and most of them are active only during debugging. I&#39;ll write more about them in a later post but here is a brief description of each of them. From left to right:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Information: Basically this panel is used by DILE for logging. Every time you load assemblies DILE will log here the process. And of course, if any error occurs in DILE then those will be logged here as well. Please, do send me such logs if you come across any error.&lt;/li&gt;
&lt;li&gt;Debug Output Panel: Events raised by the underlying debugging API (ICorDebug) will be added here. Although in most cases they are rather interesting than useful.&lt;/li&gt;
&lt;li&gt;Log Message Panel: The debugge&#39;s debug messages will be collected here. If you call System.Diagnostics.Debug.Write() or anything similar in your code then expect the output to appear in this panel.&lt;/li&gt;
&lt;li&gt;Threads Panel: List of threads in the debuggee process.&lt;/li&gt;
&lt;li&gt;Modules Panel: List of modules loaded by the debuggee process.&lt;/li&gt;
&lt;li&gt;Call Stack Panel: The current call stack of the active thread.&lt;/li&gt;
&lt;li&gt;Breakpoints Panel: List of breakpoints that were set in the IL code.&lt;/li&gt;
&lt;li&gt;Local Variables Panel: List of the currently active method&#39;s local variables.&lt;/li&gt;
&lt;li&gt;Arguments Panel: List of the currently active method&#39;s arguments.&lt;/li&gt;
&lt;li&gt;Auto Objects Panel: Currently this panel is only used for displaying the active exception (if there is any).&lt;/li&gt;
&lt;li&gt;Watch Panel: User specified expressions that will be evaluated every time the debuggee is paused.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;5. Project related stuff.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Project explorer: Lists all the loaded assemblies and allows browsing their content. You will find all information about assemblies here like types, methods, properties and so on.&lt;/li&gt;
&lt;li&gt;Quick Search: Allows users to search types, methods, properties, fields, events, etc. The idea is not new. Just start to type and DILE will filter the list of items for you.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;6. Status bar: You can see messages from DILE here similarly to the Information panel.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;These are the most important areas of the DILE main window. As I mentioned earlier, in future posts I&#39;ll explain all of them in more details and I&#39;ll explain how I use them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;And of course, if there&#39;s anything specific that you would like to hear about then please let me know.&lt;/div&gt;</description><link>http://pzsolt.blogspot.com/2011/04/dile-tutorial-part-1-main-window.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-4792315481817981230</guid><pubDate>Fri, 22 Apr 2011 19:41:00 +0000</pubDate><atom:updated>2011-04-22T21:41:16.613+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">ILSpy</category><title>Time to kill DILE?</title><description>First of all, please take a look at this post:&lt;br /&gt;
&lt;a href=&quot;http://community.sharpdevelop.net/blogs/marcueusebiu/archive/2011/04/12/ilspy-debugger-preview.aspx&quot;&gt;ILSpy Debugger Preview&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I think ILSpy is one of the most promising free alternatives of Reflector. I&#39;m already using and like it. However, as the post above shows it also supports debugging... which makes DILE quite useless, to be honest. Of course, it&#39;s not as feature rich as DILE yet but I&#39;m quite sure the #develop team will soon match DILE&#39;s capabilities since they just have to integrate the existing debugger engine of #develop into ILSpy and they are done. And they have even managed to tie their debugger and decompiler together which means that ILSpy is able to debug the decompiled C# code, not just the IL code. Which is a really amazing feature. No doubt, soon it&#39;ll be a lot more useful tool than DILE.&lt;br /&gt;
&lt;br /&gt;
Which makes me wonder whether it&#39;s worth continuing DILE. I started this project more than 6 years ago and it always surprised me that during all these years nobody created any similar product (or at least I don&#39;t know of any). For a while it seemed like Microsoft&#39;s mdbg might be a similar tool but lately it seems to be neglected.&lt;br /&gt;
&lt;br /&gt;
Anyway, I&#39;ve spent lots of nights on developing DILE. Lately I could spend less time on it though as before. I have a full-time job, a wife and a 2.5 years old son which should explain this. For the last 2 years I stayed awake until 4 am almost every Friday and Saturday just to do my usual stuff (reading blogs etc.) and work on DILE. I&#39;m also writing this post at 3 am... So, I have really sacrificed a lot for the DILE project. Please don&#39;t misunderstand me though, I don&#39;t regret it at all. I would say it was well worth it as I learnt a lot along the way and it even helped me to find better jobs (it looks good in my CV :-)).&lt;br /&gt;
&lt;br /&gt;
So this is the current situation. I think I have a couple of choices:&lt;br /&gt;
&lt;b&gt;1. Keep working on DILE and make it an alternative of ILSpy&lt;/b&gt;&lt;br /&gt;
I think it&#39;s safe to say that right now DILE is a better debugger than ILSpy. However, there is whole team behind ILSpy and I definitely can&#39;t compete with them alone. Oh, and I&#39;m sorry but actually I do want to work on DILE alone. Simply because I want to know all its parts to learn a little bit about everything. So, once ILSpy has all the usual debugger features I simply can&#39;t see why anyone would choose DILE. Maybe I could start to work on the assembler part like I have been planning for a long time and that would make DILE a unique tool once again but I&#39;m sure it wouldn&#39;t be such a big trouble for the #develop team to do the same. So, I&#39;m really not sure whether it&#39;s worth it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Rewrite DILE and ignore ILSpy&lt;/b&gt;&lt;br /&gt;
Seriously, I think the code of DILE is just awful. I&#39;m ashamed of it. I&#39;ve been dreaming of rewriting it for ages but never really dared to do it because it would take probably a year or more to do so especially at my current pace. But now that ILSpy appeared, I don&#39;t have much to lose. I could rewrite DILE from scratch, create a proper disassembler API, clean-up all the debugging code, maybe create a nice plug-in system and so on. It would be fun. At the end I still wouldn&#39;t be able to compete ILSpy but at least I would have some fun.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Just give it up&lt;/b&gt;&lt;br /&gt;
Maybe I should do this. And spend my nights in the bed, not in front of the computer.&lt;br /&gt;
&lt;br /&gt;
I really don&#39;t know which option I should choose...&lt;br /&gt;
&lt;br /&gt;
Anyway, even before I read about the debugger feature of ILSpy I was planning to write a little tutorial for DILE and I will really do that in the next couple of weeks. Meanwhile I&#39;ll try to decide what to do with DILE.&lt;br /&gt;
&lt;br /&gt;
Soon it&#39;s time to go to sleep. It&#39;s almost 4 am...</description><link>http://pzsolt.blogspot.com/2011/04/time-to-kill-dile.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>11</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-6227838919180636676</guid><pubDate>Sun, 13 Mar 2011 10:03:00 +0000</pubDate><atom:updated>2011-03-13T11:03:01.313+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><title>No more BadImageFormatExceptions</title><description>Hopefully.&lt;br /&gt;
&lt;br /&gt;
As far as I can tell, one of the most common errors that users encounter with DILE is that it crashes on startup with a default Windows error message box. Usually an entry is generated in the Event Log though that says an unhandled BadImageFormatException caused the problem.&lt;br /&gt;
&lt;br /&gt;
Most often the reason for this error is that the Microsoft Visual C++ Runtime is not installed on the machine and therefore the Dile.Debug.dll (which is a VC++ assembly) cannot be loaded. Obviously, installing the runtime solves this problem.&lt;br /&gt;
&lt;br /&gt;
However, there&#39;s one more solution: copying the necessary runtime files in the folder of the application. This way installation of the runtime can be avoided.&lt;br /&gt;
&lt;br /&gt;
So, to avoid such ugly BadImageFormatExceptions in the future, I&#39;ll include the necessary files (mvcp100.dll and msvcr100.dll) in all new releases of DILE. This means each release will be ~0.5 MB bigger but hopefully this step will save a lot of headache for new users. And DILE will still fit on a 3.5&quot; floppy disk. :-)&lt;br /&gt;
&lt;br /&gt;
Of course, if you don&#39;t want to have those extra dlls in the DILE folder then you can delete them and rather install the VC++ runtime.</description><link>http://pzsolt.blogspot.com/2011/03/no-more-badimageformatexceptions.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-3012625188945849964</guid><pubDate>Sun, 22 Aug 2010 13:12:00 +0000</pubDate><atom:updated>2010-08-28T19:54:12.339+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">dump debugging</category><category domain="http://www.blogger.com/atom/ns#">weekly build</category><title>DILE feature: loading modules from memory dump files</title><description>One of the main reasons why I started to work on dump-debugging support for DILE is that I thought I could add a little twist to it once again.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The problem&lt;/b&gt;&lt;br /&gt;
If you&#39;re using VS2010 for analyzing a dump file then you&#39;ll run into a quite serious problem very quickly: if VS can&#39;t find the original source code and pdb file of the modules then it will show you only the disassembled x86 code. This can really make life difficult as it&#39;s quite difficult to map back those x86 instructions to your actual code to figure out which line caused a problem etc.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The solution&lt;/b&gt;&lt;br /&gt;
DILE has had a very interesting feature for ages: it can load dynamically generated assemblies from the memory of a debuggee process. What this means is that if your application generates assemblies on-the-fly via Reflection.Emit (compiled RegExes do the same or the XSLT compiler if an XSLT file contains C# code) then DILE can load that assembly and treat it as any other assembly even if it&#39;s never saved on the hard disk. And of course, all the usual features like breakpoints, stepping etc also work with such dynamic assemblies.&lt;br /&gt;
So obviously I wanted to do the same with dump files since they usually contain the full memory of the debuggee, including loaded modules. Fortunately it was quite easy to modify the code to load modules from the memory of the debuggee process (i.e. from the dump file) instead of looking for them on the hard disk. Although fixing the UI wasn&#39;t trivial but that&#39;s a long story. :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Usage&lt;/b&gt;&lt;br /&gt;
If you download the latest weekly build of DILE and load a dump file in it then you will notice that there&#39;s a new menu item in all context menus related to modules: &quot;Add module to project from memory dump&quot;. If you click on this option then DILE will read the module from the dump file and not from your local hard drive.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why is this cool?&lt;/b&gt;&lt;br /&gt;
As a result you don&#39;t have to worry anymore about what version of your application crashed when you created the dump file, you don&#39;t have to know what patches were applied on your application/3rd party components/.NET Framework and most importantly you don&#39;t have to have exactly the same version of all components on your machine when you&#39;re dump debugging. DILE will show you the state of your application _exactly_ as it was when the dump file was created. And that makes finding bugs a lot easier. :-)&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
&lt;b&gt;The Screenshots&lt;/b&gt;&lt;br /&gt;
Alex suggested in the comments section adding screenshots to this post which is definitely a good idea. I used to upload files to &lt;a href=&quot;http://www.freewebtown.com/&quot;&gt;FreeWebTown&lt;/a&gt;&amp;nbsp;but let&#39;s say... I&#39;m not really satisfied with them. They simply deleted my account without any warning so all the files that I had there are lost. Unfortunately I don&#39;t have backups as well because over the years I had a few unplanned hard disk crashes etc.&lt;br /&gt;
Anyway... I&#39;ve realized that I can also upload files to SourceForge. I trust them more. :-)&lt;br /&gt;
So, the screenshots:&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;     &lt;td&gt;&lt;br /&gt;
&lt;a href=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/OpenDump_large.png&quot;&gt;&lt;img src=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/OpenDump_small.png&quot; target=&quot;_blank&quot; /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;td&gt;&lt;br /&gt;
&lt;a href=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/AddModuleFromDump_large.png&quot;&gt;&lt;img src=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/AddModuleFromDump_small.png&quot; target=&quot;_blank&quot; /&gt;&lt;/a&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;     &lt;td&gt;&lt;br /&gt;
Opening a memory dump file&lt;/td&gt;     &lt;td&gt;&lt;br /&gt;
Loading module from the memory dump file in the Modules Panel&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;     &lt;td&gt;&lt;br /&gt;
&lt;a href=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/AddModuleFromDump2_large.png&quot;&gt;&lt;img src=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/AddModuleFromDump2_small.png&quot; target=&quot;_blank&quot; /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;td&gt;&lt;br /&gt;
&lt;a href=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/AddModuleFromDump3_large.png&quot;&gt;&lt;img src=&quot;http://dile.sourceforge.net/Screenshots/v0_2_7_2250/AddModuleFromDump3_small.png&quot; target=&quot;_blank&quot; /&gt;&lt;/a&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;     &lt;td&gt;&lt;br /&gt;
Loading module from the memory dump file in the Call Stack Panel&lt;/td&gt;     &lt;td&gt;&lt;br /&gt;
Loading module from the memory dump file in the Object Viewer&lt;/td&gt;   &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description><link>http://pzsolt.blogspot.com/2010/08/dile-feature-loading-modules-from.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-3765582691065411808</guid><pubDate>Sun, 01 Aug 2010 11:19:00 +0000</pubDate><atom:updated>2010-08-01T13:19:03.041+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">dump debugging</category><title>Dump-debugging in DILE</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;I have spent the last few weeks on trying to get dump debugging working in DILE. At last, I have something that is working quite well. However, I have to warn everyone who wants to try the latest weekly build: I had to modify quite a lot of things (especially in the UI) and as a result I might have broken features that affect &quot;live&quot; debugging as well. So, I strongly recommend using the latest build really only for experimenting.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;Enough of excuses. Here is what you get if you give the latest version a try.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;b&gt;Save memory dump&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;If you click on the File menu then you will see that there&#39;s a new item called &quot;Save memory dump&quot;. This feature allows you to dump the memory of any (managed or unmanaged) process. Under the hood it&#39;s really just a call to a Win32 function to create the memory dump file.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;i&gt;Usage:&lt;/i&gt;&lt;br /&gt;
1. Click File -&amp;gt; Save memory dump...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;2. Enter the Id of the target process or select it using the Browse... button.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;3. Select a dump type. You can find detailed description of what these flags mean in &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms680519(v=VS.85).aspx&quot;&gt;MSDN&lt;/a&gt;. In most cases, leaving the default selection is perfectly fine.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;4. Select the location where the memory dump file will be saved.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;5. Click Save. You&#39;re done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;i&gt;Rules:&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;- You can dump the memory of both managed and unmanaged processes.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;- The target process doesn&#39;t have to be paused or being debugged. (although taking a memory dump of a process that is running doesn&#39;t sound very useful)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;- The result memory dump file is completely standard. You can load it in VS2010, WinDbg, DILE or any other debugger.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;b&gt;Load memory dump&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;This is the really interesting bit. Once you have a dump file, you can copy it to any machine, load it in DILE and check the status of the target process as it was when you made the dump. DILE is using the same API as VS2010 so you get the same features (more or less).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;i&gt;Usage:&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;1. Click File -&amp;gt; Load memory dump...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;2. Select your dump file and click Open.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;3. At this point DILE switches into a state that is very similar to what you get when you pause a live process.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;i&gt;Rules:&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: 13px;&quot;&gt;- Only .NET 4.0 target processes are supported.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: 13px;&quot;&gt;- You can see threads, modules, call stack, local variables, arguments and current exception. You can inspect variables using the Object Viewer, switch between threads and frames in the call stack and so on. So you get all the usual features.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;- Obviously, you can&#39;t step in the code or run the process as there&#39;s no live process.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;- For now, assemblies are loaded from your hard disk and not from the memory dump. Therefore if an assembly is not exactly at the same location as it was on the original computer then you will have to help DILE and load it manually. (I&#39;ll try to fix this later.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;- Unfortunately you can&#39;t evaluate method calls.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;The latter is quite a serious limitation and I k&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: 13px;&quot;&gt;now VS2010 supports it. I think, VS uses a so called &quot;IL interpreter&quot; but I couldn&#39;t find any information about it. I&#39;m afraid it&#39;s not a proper public API but rather a feature in VS2010 that is not exposed to anyone else. I&#39;ve already &lt;a href=&quot;http://social.msdn.microsoft.com/Forums/en-US/netfxtoolsdev/thread/dfb664b3-c58c-4e8b-a71b-fa24c5898034/?prof=required&quot;&gt;asked about it in an MS forum&lt;/a&gt;&amp;nbsp;and currently my question is assigned to Jon Langdon (PM of the debugger team) but I haven&#39;t received any reply yet. So, please vote on my thread, perhaps it will help me to get an answer faster. :)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: 13px;&quot;&gt;Anyway, that&#39;s what I have for now. Have fun with DILE and dump-debugging. And as always, please let me know if you find any bug related to memory dump or live debugging. Or anything else. :)&lt;/span&gt;&lt;/div&gt;</description><link>http://pzsolt.blogspot.com/2010/08/dump-debugging-in-dile.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-9210624216989136171</guid><pubDate>Thu, 01 Jul 2010 12:30:00 +0000</pubDate><atom:updated>2010-07-01T14:30:02.758+02:00</atom:updated><title>History of DILE</title><description>I registered DILE exactly 6 years and 7 days ago. To celebrate this anniversary, I thought I&#39;d share the history of the project.&lt;br /&gt;
&lt;br /&gt;
It all started in 2003. I was still a noob programmer with only 3 years of experience. I was still having my first job where I was developing an accounting and a leasing program for a small Hungarian company. The former was a typical data-focused&amp;nbsp;WinForms application. It was full of maintenance screens where you could add partners, offices and so on. All the usual stuff. This application was also used by my company in the hardware shop.&lt;br /&gt;
&lt;br /&gt;
I still remember that I - as a developer - worked on the 2nd floor of the building while the shop was in the basement. One day I was asked to deploy the latest version of the application. So I went down to do so. After finishing with the installation one of the managers took a look at the program and &quot;played&quot; with it a little bit. Unfortunately he found a &quot;very serious bug&quot;: sorting in one of the grids was incorrect. So I had to climb upstairs just to change the sorting string from &quot;ASC&quot; to &quot;DESC&quot;. I was quite angry to walk so much just to make such a trivial modification and meanwhile I thought it would be really cool to have a program that would allow me to modify the application without recompiling it...&lt;br /&gt;
&lt;br /&gt;
This idea kept cropping up in my mind. Then came PDC &#39;03 and lot of interesting new products were announced: Longhorn, Whidbey, Yukon and so on. I wanted to get familiar with them and I was lucky enough to get a copy of them. So I decided to discover what was new by working on a real project. Of course, the idea of an &quot;assembly editor&quot; came in my mind immediately... But that sounded far too complicated so first I tried to create a bug tracker using Yukon, Indigo, Avalon and ObjectSpaces. But I quickly got bored of it and there were too many bug trackers available anyway. I couldn&#39;t think of any good reason why anyone would choose mine... And then that idea of the &quot;assembly editor&quot; was still in the back of my mind...&lt;br /&gt;
&lt;br /&gt;
After hesitating for a few days, I couldn&#39;t resist starting to work on that recurring idea. First I created a very naive implementation using Reflection and Reflection Emit. As I remember it took only a month to create a very simple editor that could be used to modify a &quot;Hello, World&quot; style console application. It did work. But I felt that Reflection won&#39;t be enough for the job... Anyway, I sent this application to a guy who influenced my mentality quite a lot. He suggested me to put the source code on SourceForge and he also helped me to get a job in Budapest. A few months later I moved to Budapest with his help. The project got a proper name and I restarted it from scratch, this time using the lot more powerful Unmanaged Metadata API.&lt;br /&gt;
&lt;br /&gt;
So, that&#39;s the story. Simply laziness (climbing 3 floors from the shop to my room) resulted in a project that I have been working on for more than half of a decade. And I&#39;m not even near completing it yet... :-)</description><link>http://pzsolt.blogspot.com/2010/07/history-of-dile.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-4683117541429019335</guid><pubDate>Sun, 30 May 2010 07:01:00 +0000</pubDate><atom:updated>2010-05-30T09:01:49.891+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET 4.0</category><category domain="http://www.blogger.com/atom/ns#">DILE</category><title>DILE and .NET 4.0</title><description>Good news. I&#39;ve started to work on modifying DILE to support .NET 4.0. The latest &lt;a href=&quot;http://sourceforge.net/projects/dile/files/&quot;&gt;weekly build&lt;/a&gt; that I uploaded is running on .NET 4 and it does support debugging .NET 4 applications. However, it doesn&#39;t really use any .NET 4 specific feature yet and so far I&#39;ve tested it for maybe half an hour so be very cautious with it. :-)&lt;br /&gt;
&lt;br /&gt;
By the way, upgrading to .NET 4 was not so trivial. Apparently the MSDN documentation is not really clear about how it should be done. But fortunately &lt;a href=&quot;http://blogs.msdn.com/b/rmbyers/&quot;&gt;Rick Byers&lt;/a&gt;&amp;nbsp;helped me after I &lt;a href=&quot;http://social.msdn.microsoft.com/Forums/en-US/netfxtoolsdev/thread/ce457f9b-a31f-4be4-9a49-b73ecda62269&quot;&gt;posted my question&lt;/a&gt; in an MSDN forum. So, I owe him a special thanks and hopefully his answer will help others as well.&lt;br /&gt;
&lt;br /&gt;
P.S.: I think I will try to add support for debugging dump files as well in the future. :-)</description><link>http://pzsolt.blogspot.com/2010/05/dile-and-net-40.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-5700229928524833857</guid><pubDate>Fri, 14 May 2010 19:06:00 +0000</pubDate><atom:updated>2010-05-14T21:06:43.389+02:00</atom:updated><title>But where is the &#39;E&#39;?</title><description>Recently DILE received 2 negative ratings/reviews on&amp;nbsp;&lt;a href=&quot;http://dile.sourceforge.net/&quot;&gt;SourceForge&lt;/a&gt;&amp;nbsp;because it is not a real IL editor. And this is not the first case when DILE is&amp;nbsp;&lt;a href=&quot;http://bytes.com/topic/net/answers/844999-net-executable-editor&quot;&gt;accused&lt;/a&gt;&amp;nbsp;of not having this feature.&lt;br /&gt;
&lt;br /&gt;
Perhaps it&#39;s time to make it clear: DILE is not an IL editor. It does not allow you to modify the IL (binary) code of an assembly. Yet...&lt;br /&gt;
&lt;br /&gt;
The description of DILE on SourceForge says:&lt;br /&gt;
&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #777777; font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;Dotnet IL Editor (DILE) is an editor program which helps modifying .NET assemblies. It is intended to be able to disassemble .NET assemblies, modify the IL code, recompile it and run inside a debugger.&lt;/span&gt;&lt;/blockquote&gt;This is the description that I sent to SourceForge admins almost 6 years ago to get the project approved. I haven&#39;t changed it since then and seems like this was a mistake. Although I thought the expression &quot;intended to be&quot;, the project status of &quot;planning&quot; and the version number which is nowhere near 1.0 shows that DILE is not really ready yet.&lt;br /&gt;
&lt;br /&gt;
But anyway, I have changed the description to this:&lt;br /&gt;
&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #777777; font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;Dotnet IL Editor (DILE) allows disassembling and debugging .NET 1.0/1.1/2.0/3.0/3.5 applications without source code or .pdb files. It can debug even itself or the assemblies of the .NET Framework on IL level.&lt;/span&gt;&lt;/blockquote&gt;I hope this helps to avoid such confusions in the future.</description><link>http://pzsolt.blogspot.com/2010/05/but-where-is-e.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-5142286979217643618</guid><pubDate>Sat, 08 May 2010 17:11:00 +0000</pubDate><atom:updated>2010-05-15T19:30:48.222+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">weekly build</category><title>(Almost) Weekly builds</title><description>Usually after working on DILE, I make a release build which I upload&amp;nbsp;to SkyDrive for myself.&amp;nbsp;The next day I download it in my office and use it. &quot;Eat your own dogfood.&quot;. And I was&amp;nbsp;thinking that others might also be interested in getting&amp;nbsp;such&amp;nbsp;latest&amp;nbsp;builds of DILE. Fortunately my suspicion was confirmed by an e-mail that I received not so long ago. Thus I decided to make weekly builds of DILE publicly available.&lt;br /&gt;
&lt;br /&gt;
First of all a warning: what I upload and make available is _never_ a stable, tested version of DILE. It might crash and cause other problems. I don&#39;t promise that it&amp;nbsp;works properly. It is a version that is still under development, features might not be completely implemented and there might be bugs that officially released versions should not have. I strongly recommend using v0.2.6 that is available on SourceForge for doing serious job like debugging on a production server.&lt;br /&gt;
&lt;br /&gt;
But if you&#39;re still interested in using the latest version of DILE despite the warning then&amp;nbsp;you can find the build&amp;nbsp;on &lt;a href=&quot;http://sourceforge.net/projects/dile/files/&quot; target=&quot;_blank&quot;&gt;SourceForge&lt;/a&gt;.&amp;nbsp;I will regularly update this file&amp;nbsp;based on&amp;nbsp;the&amp;nbsp;latest modifications in the&amp;nbsp;source code.&lt;br /&gt;
&lt;br /&gt;
I really hope that sharing the latest build of DILE will help me with getting more&amp;nbsp;feedback. Therefore if you have any opinion about the changes that you see in DILE or you find any bug that I introduced since the last official release then please let me know.&lt;br /&gt;
&lt;br /&gt;
Edit: I modified the link to the weekly builds. I will always put the latest weekly build in the DILE/WeeklyBuild folder together with a couple of previous versions.</description><link>http://pzsolt.blogspot.com/2010/05/almost-weekly-builds.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-2459117722829091686</guid><pubDate>Mon, 05 Apr 2010 14:23:00 +0000</pubDate><atom:updated>2010-04-05T16:23:47.551+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">logo</category><title>DILE logo</title><description>One of my colleagues complained several times because DILE used the standard .NET icon and thus it was a bit difficult to find it in the taskbar.&lt;br /&gt;
&lt;br /&gt;
Unfortunately I can&#39;t draw. I have absolutely no talent for arts so I decided to look for a logo. And what else could the logo be? Of course, it&#39;s a crocoDILE (pun intended).&lt;br /&gt;
&lt;br /&gt;
However, finding logos is not as easy I thought. I spent more than 3 hours on searching for images on the Internet. I wanted something free, non-cartoonish with the correct aspect ratio. In the end I found this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://icons.mysitemyway.com/free-clipart-icons/1/crocodile-icon-id/124409/style-id/898/matte-white-square-icons/animals/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgODXKumTvv3M7vCvYocnYlMjRdwtuFNFN8Ckm5F0R9_db5sN4bhvooLb1q8Fmb3IIC83YdaAS4N3EF46Ga-mUybd_5tFHXXb8Ddm5PBfQYvvQvaprumWeOciWo0EM6G-XR0TQ2yQ/&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It&#39;s quite nice I think. I&#39;ve created smaller icons from it and now both the .exe and the main form uses these icons. I&#39;ve also added a Start Page which contains this logo and the version number.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfBkmAPbkC4VRYNYerVrjBvsPFZ1OoHz2xwTv5JD1UOcMN83u3-TUA6Zgv0otVn-GPgG3LeZt_fMNdjEZ52nSsBMUeXhLcsYG2l2bVjD3cJI3CyvTzF8RjVhMemyiwH4rYgDAM4Q/s912/dile_large_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdef-7pCQKjtBDhszQ7-_4bvbGh7ANk719K39rLe-Fr_40BRz5c3o_VtH1vqRnV16Y_OJQtCTPQExdzG_xUUvELdK7x72B0vPrXQEGOzVrkwiF3FhkWYSgYmszOyVknaVGxZ3dWA/&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I&#39;m also going to add the list of recent projects and assemblies to this new Start Page which will make it a bit more useful.&lt;br /&gt;
&lt;br /&gt;
But seems like I&#39;m not done with images yet as another colleague keeps asking me to find icons for the panels...</description><link>http://pzsolt.blogspot.com/2010/04/dile-logo.html</link><author>noreply@blogger.com (Zsozso)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgODXKumTvv3M7vCvYocnYlMjRdwtuFNFN8Ckm5F0R9_db5sN4bhvooLb1q8Fmb3IIC83YdaAS4N3EF46Ga-mUybd_5tFHXXb8Ddm5PBfQYvvQvaprumWeOciWo0EM6G-XR0TQ2yQ/s72-c" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-4805827992380718927</guid><pubDate>Sun, 21 Mar 2010 14:18:00 +0000</pubDate><atom:updated>2010-03-21T15:18:29.055+01:00</atom:updated><title>DILE tutorial... from a hacker?</title><description>As&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Jeremy_Clarkson&quot;&gt;Jeremy Clarkson&lt;/a&gt;&amp;nbsp;would say it in&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Top_Gear&quot;&gt;Top Gear&lt;/a&gt;: &quot;I went on the Internet and found this&quot;:&lt;br /&gt;
&lt;a href=&quot;http://www.elitepvpers.de/forum/9dragons/487569-9dvn-dupe-hack-full-tutorial-faq.html&quot;&gt;Hacking Ngoa Ho Tang Long with Dotnet IL Editor&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Basically, it&#39;s a video tutorial that shows how DILE can be used to get the serial number of an application by debugging it.&lt;br /&gt;
&lt;br /&gt;
I must admit I&#39;m both happy and sad to see this. I&#39;m happy to see that DILE is popular and used by people but I&#39;m sad to see that my program is used for avoiding paying somebody for his/her work.&lt;br /&gt;
&lt;br /&gt;
Although I guess I shouldn&#39;t be surprised as DILE is already part of a &lt;a href=&quot;http://www.opda.hk/index.php?showtopic=10095&quot;&gt;hacker tool collection&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S.: Does anyone know what was used to make that video? It looks nice. If it&#39;s free then I&#39;d also use it for making more DILE tutorials... about debugging, not hacking. :-)</description><link>http://pzsolt.blogspot.com/2010/03/dile-tutorial-from-hacker.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-1450239126331968402</guid><pubDate>Sun, 14 Mar 2010 09:54:00 +0000</pubDate><atom:updated>2010-03-14T10:54:30.170+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">personal</category><title>I&#39;m back</title><description>Well, I&#39;ve never really left.&lt;br /&gt;
&lt;br /&gt;
For the last few years I have been quite busy (or rather lazy) so I didn&#39;t spend too much time on my blog or DILE. Although I was always &quot;here&quot;, answered e-mails and fixed bugs in the code. By the way, one of the reasons why I &quot;disappeared&quot; is that my son was born in 2008 and he keeps me quite busy since then (although I really enjoy it :-) ).&lt;br /&gt;
&lt;br /&gt;
Quite surprisingly - despite my inactivity - DILE has remained quite popular. According to&amp;nbsp;&lt;a href=&quot;http://sourceforge.net/project/stats/detail.php?group_id=112895&amp;amp;ugn=dile&amp;amp;type=prdownload&amp;amp;mode=alltime&amp;amp;file_id=0&quot;&gt;SourceForge&lt;/a&gt;&amp;nbsp;it is still downloaded 4-500 times/month which makes me really happy.&lt;br /&gt;
&lt;br /&gt;
And actually it&#39;s becoming popular even among my&amp;nbsp;&lt;a href=&quot;http://aryaputra.net/2010/01/an-introduction-to-dile-part-1/&quot;&gt;colleagues&lt;/a&gt;. So I decided to continue working on DILE. I really hope that I can finish it before MS comes up with a new platform (.NET is becoming rather old as its first beta was released a decade ago).&lt;br /&gt;
&lt;br /&gt;
So dear reader/DILE user, as a first step, I&#39;d like to ask your help in making DILE a bit more bug-free. Unfortunately there are still many bugs in DILE (in fact, I&#39;ve just fixed 2 bugs in the debugging-time expression evaluation code) and thus if you come across any then please &lt;a href=&quot;http://sourceforge.net/tracker/?group_id=112895&amp;amp;atid=663545&quot;&gt;submit it in SourceForge&lt;/a&gt;&amp;nbsp;and I&#39;ll try to fix it as soon as possible.&lt;br /&gt;
&lt;br /&gt;
Although I can&#39;t promise spending as much time on DILE as I used to but I&#39;m trying to do my best. I spend weekdays with my son and try to work on DILE in the weekends after he goes to sleep. Actually, I sleep more during weekdays than weekends (yesterday I was fixing those 2 bugs until 4 a.m. :-) ).&lt;br /&gt;
&lt;br /&gt;
Thank you in advance and happy DILE-ing! :-)&lt;br /&gt;
&lt;br /&gt;
P.S.: Expect a few more blog entries in the near future about DILE. :-)&lt;br /&gt;
P. P.S.: Unfortunately spammers have found my blog so I decided to manually moderate comments. But please feel free to send comments; I&#39;ll publish them as long as they are DILE related.</description><link>http://pzsolt.blogspot.com/2010/03/im-back.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-7954667741700170840</guid><pubDate>Sun, 04 Nov 2007 06:10:00 +0000</pubDate><atom:updated>2007-11-04T16:48:13.013+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><title>DILE v0.2.6: VC++ SP1 runtime</title><description>A few days ago I tried to run DILE on a Windows XP machine which had only .NET Framework installed. Of course, I got the usual System.IO.FileLoadException. So, I installed the VC++ runtime which is needed because the Dile.Debug.dll is actually a mixed assembly. However, this didn&#39;t solve the problem. After searching a little bit on google I noticed that there is a new VC++ runtime which was published together with the Visual Studio SP1. Since I am using Vista, I also installed the SP1 and as a result the Dile.Debug.dll references the new SP1 runtime.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So, please install the VC++ SP1 runtime if you want to use DILE v0.2.6 on a machine which doesn&#39;t have Visual Studio SP1 and/or the VC++ components installed.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have updated the .zip files on Sourceforge (I only changed the readme.txt, nothing else) and fixed the readme.txt to contain the correct links.&lt;br /&gt;So, here is the updated &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_11_04/readme.txt&quot; target=&quot;_blank&quot;&gt;readme.txt&lt;/a&gt; file separately, plus the links to the correct runtimes:&lt;br /&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displaylang=en&quot; target=&quot;_blank&quot;&gt;x86 VC++ SP1 runtime&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;familyid=eb4ebe2d-33c0-4a47-9dd4-b9a6d7bd44da&quot; target=&quot;_blank&quot;&gt;x64 VC++ SP1 runtime&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course, if you have already downloaded DILE v0.2.6, then it is not necessary to download it again, just remember to use the new runtime if you ever receive a FileLoadException.</description><link>http://pzsolt.blogspot.com/2007/11/dile-v026-vc-sp1-runtime.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-4188138143746801393</guid><pubDate>Sat, 29 Sep 2007 06:32:00 +0000</pubDate><atom:updated>2007-09-30T14:23:59.338+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><title>DILE v0.2.6</title><description>I have uploaded a new version of DILE on to Sourceforge.&lt;br /&gt;&lt;br /&gt;zip file (x86): &lt;a href=&quot;http://downloads.sourceforge.net/dile/dile_v0_2_6_x86.zip?modtime=1191152596&amp;big_mirror=0&quot; target=&quot;_blank&quot;&gt;dile_v0_2_6_x86.zip&lt;/a&gt;&lt;br /&gt;zip file (x64): &lt;a href=&quot;http://downloads.sourceforge.net/dile/dile_v0_2_6_x64.zip?modtime=1191152585&amp;big_mirror=0&quot; target=&quot;_blank&quot;&gt;dile_v0_2_6_x64.zip&lt;/a&gt;&lt;br /&gt;readme.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/readme.txt&quot; target=&quot;_blank&quot;&gt;readme.txt&lt;/a&gt;&lt;br /&gt;license.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/license.txt&quot; target=&quot;_blank&quot;&gt;license.txt&lt;/a&gt;&lt;br /&gt;change_log.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/change_log.txt&quot; target=&quot;_blank&quot;&gt;change_log.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are four main improvements besides several small ones and bug fixes (see the change_log.txt for more details):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generics (type parameters) are now completely supported, which means that the Object Viewer window can inspect and display such types perfectly and expressions that contain type parameters can be evaluated during debugging as well.&lt;/li&gt;&lt;li&gt;.NET 2.0 permission sets are now displayed correctly. Earlier I could not find the specification of these; and thus I just displayed the binary content which often resulted in ugly unicode characters. Eventually, I could find the specification and this problem is fixed now.&lt;/li&gt;&lt;li&gt;Events are disassembled. This was my mistake, I simply forgot about events... In the Project Explorer the tree now contains an &quot;Events&quot; node where a class&#39; events are collected.&lt;/li&gt;&lt;li&gt;Enums are also parsed now and can be used in expressions. However, my implementation differs from Visual Studio&#39;s. Mine is not so strict, which means that enum values don&#39;t have to be converted to int or their other underlying type. E.g.: TestApplication.TestClass.TestMethod(TestApplication.TestEnum.TestField) is accepted by DILE, it&#39;s not necessary to cast the TestApplication.TestEnum.TestFiled to int.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_1.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Proper .NET 2.0 permission set (instead of the ugly unicode characters)&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_2.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_2.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Event of a class&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_3.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_3.png&quot;&gt;&lt;/a&gt;&lt;br&gt;New generic instance created by evaluating expression&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_4.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_4.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Calling instance method with type parameter on a generic object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_5.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_5.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Array of generic objects&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_6.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_6.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Array of generic structs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_7.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_7.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Calling a method that has its own type parameters but also uses its enclosing generic class&#39;s type parameter as well&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_large_8.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_6_2007_09_30/dile_small_8.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Passing enum as parameter (instead of int value as earlier)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Here are some of the expressions that I used for testing. These are correctly evaluated by the new version:&lt;br /&gt;TestApplication.GenericClass&lt;int, string&gt;.Method()&lt;br /&gt;new TestApplication.GenericsTest&lt;int, string&gt;(5, &quot;test&quot;)&lt;br /&gt;new TestApplication.GenericsTest2().GenericMethod&lt;int&gt;(5)&lt;br /&gt;new TestApplication.GenericsTest&lt;int, string&gt;(5, &quot;test&quot;).GenericMethod&lt;int&gt;(6)&lt;br /&gt;new TestApplication.TestClass.NestedClass()&lt;br /&gt;new TestApplication.GenericClass&lt;int, string&gt;.NestedGenericClass&lt;short&gt;()&lt;br /&gt;new TestApplication.TestClass.NestedClass[] {new TestApplication.TestClass.NestedClass()}&lt;br /&gt;new TestApplication.TestClass&lt;int, string&gt;[] {new TestApplication.TestClass&lt;int, string&gt;(1, &quot;one&quot;)}&lt;br /&gt;new System.DateTime[] {System.DateTime.Now}&lt;br /&gt;new TestApplication.GenericStruct&lt;int, string&gt;[] {new TestApplication.GenericStruct&lt;int, string&gt;(1, &quot;one&quot;)}&lt;br /&gt;TestApplication.GenericClass&lt;int, System.DateTime&gt;.StaticMethod&lt;string&gt;(&quot;test&quot;)&lt;br /&gt;TestApplication.GenericClass&lt;int, System.DateTime&gt;.NestedGenericClass&lt;short&gt;.StaticGenericMethod&lt;string&gt;(&quot;test&quot;)&lt;br /&gt;TestApplication.GenericClass&lt;int, string&gt;.NestedGenericClass&lt;System.Type&gt;.StaticMixedMethod&lt;System.DateTime&gt;(System.DateTime.Now, 5, null)&lt;br /&gt;new TestApplication.DebugTest.InnerClass[] {new TestApplication.DebugTest.InnerClass(), null}&lt;br /&gt;TestApplication.TestClass.TestMethod(TestApplication.TestEnum.TestField)&lt;br /&gt;new TestApplication.GenericClass&lt;TestApplication.Enum&gt;(TestApplication.EnumClass.TestField)&lt;br /&gt;System.Text.Encoding.UTF8.GetString(V_0) (V_0 is a byte array)&lt;br /&gt;&lt;br /&gt;P.S.: According to SourceForge DILE has been downloaded more than 10,000 times! Wow! Thank you! :-)</description><link>http://pzsolt.blogspot.com/2007/09/dile-v026.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-9028742886142842672</guid><pubDate>Wed, 07 Mar 2007 21:35:00 +0000</pubDate><atom:updated>2007-03-07T15:36:01.200+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><title>DILE tutorial: basics</title><description>&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/tutorials/tutorial1/tutorial1.htm&quot;&gt;Link to the tutorial (3.8 MB!)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, I have finished the first tutorial for DILE. It just shows some basic features of DILE and should be enough to get you started with it.&lt;br /&gt;Basically, the animation shows how to debug a newly created, very simple application (which just adds two numbers). It demonstrates how to start the application in DILE, how to step through the code, check the call stack, loaded modules, local variables/arguments, evaluate expressions and how to use the Object Viewer. There are lots of explaining messages that will - hopefully - make clear why some things work differently in DILE.&lt;br /&gt;&lt;br /&gt;Please, let me know of what you think of this tutorial, whether it&#39;s really useful, whether I should make more and if yes, then I&#39;d be glad to hear ideas on what should the following ones be about (I have a few more subjects on my mind though). Of course, I&#39;d also like to hear if you think that I should do something differently in such tutorials. And - as always - if you have anything else to say about DILE then just send me an e-mail or leave a comment. :-)&lt;br /&gt;&lt;br /&gt;One more thing, if you are planning to link to the tutorial (why would anyone do that though?), then please link to this blog entry. Sooner or later (but rather later...) I will create a homepage for DILE and then I will move the tutorials there also and I&#39;ll update the link to it in this post. Thanks!&lt;br /&gt;&lt;br /&gt;P.S.: As &lt;a href=&quot;http://pzsolt.blogspot.com/2006/11/little-change-moving-to-singapore.html#7561031590698943318&quot;&gt;Sebastian suggested&lt;/a&gt;, I have used &lt;a href=&quot;http://www.debugmode.com/wink/&quot; target=&quot;_blank&quot;&gt;Wink&lt;/a&gt; for creating this Flash animation.</description><link>http://pzsolt.blogspot.com/2007/03/dile-tutorial-basics.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-8869581439060387140</guid><pubDate>Sat, 03 Mar 2007 22:47:00 +0000</pubDate><atom:updated>2007-03-03T16:47:32.807+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">Windows Developer Power Tools</category><title>Windows Developer Power Tools</title><description>At last, I have the time to mention in this blog that THE book has been released. Actually, it was released last year. Here is a picture of the &lt;a href=&quot;http://frazzleddad.blogspot.com/2006/12/book-is-out.html&quot; target=&quot;_blank&quot;&gt;author holding a copy of it&lt;/a&gt; and actually, today I have received my copy of it as well (thanks O&#39;Reilly). It&#39;s really great feeling to see my name and my tool in a book. :-)&lt;br /&gt;&lt;br /&gt;No doubt, the two authors (&lt;a href=&quot;http://frazzleddad.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Jim Holmes&lt;/a&gt; and &lt;a href=&quot;http://dotavery.com/blog/&quot; target=&quot;_blank&quot;&gt;James Avery&lt;/a&gt;) are doing everything to make the book more popular. Last month was the &lt;a href=&quot;http://dotavery.com/blog/archive/2007/01/27/30700.aspx&quot; target=&quot;_blank&quot;&gt;Windows Developer Power Tools Day&lt;/a&gt;, a &lt;a href=&quot;http://dotavery.com/blog/archive/2007/02/04/31367.aspx&quot; target=&quot;_blank&quot;&gt;podcast&lt;/a&gt; has been created by &lt;a href=&quot;http://www.webdevradio.com/&quot; target=&quot;_blank&quot;&gt;WebDevRadio&lt;/a&gt; and an &lt;a href=&quot;http://frazzleddad.blogspot.com/2007/02/another-podcast-show.html&quot; target=&quot;_blank&quot;&gt;interview&lt;/a&gt; with the authors has even been uploaded to &lt;a href=&quot;http://channel9.msdn.com/&quot; target=&quot;_blank&quot;&gt;Channel 9&lt;/a&gt;.&lt;br /&gt;Oh, and don&#39;t forget the &lt;a href=&quot;http://www.windevpowertools.com/&quot; target=&quot;_blank&quot;&gt;book&#39;s website&lt;/a&gt;, where &lt;a href=&quot;http://www.windevpowertools.com/Tools/93&quot; target=&quot;_blank&quot;&gt;DILE has its own page&lt;/a&gt; as well. Btw, you&#39;re welcome to vote on it. ;-)&lt;br /&gt;&lt;br /&gt;I really hope that book will be/is popular and useful. And perhaps DILE can also get some new users from it. :-)</description><link>http://pzsolt.blogspot.com/2007/03/windows-developer-power-tools.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-4990032365147925281</guid><pubDate>Sun, 25 Feb 2007 16:54:00 +0000</pubDate><atom:updated>2007-02-25T10:55:00.587+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><category domain="http://www.blogger.com/atom/ns#">Singapore</category><title>DILE v0.2.5 (64-bit compatible)</title><description>First of all, yep, I&#39;m still alive. Lately I have been quite busy, I had quite a lot of things to arrange after moving to Singapore. Finding a proper accomodation was also not easy. But - at last - things seem to settle down and hopefully soon I can get back to my normal life and spend more time on DILE also. :-)&lt;br /&gt;&lt;br /&gt;Second, I could not stand the overwhelming demand anymore... Lots of users (means 2) have informed me that DILE is not running on x64 OS. I had a few ideas what can be wrong but in the end I found out that the problem was more serious than I expected. Basically, I made 2 big mistakes:&lt;br /&gt;1. I mixed up IntPtr and uint/int variables in some cases. On x86 processors this didn&#39;t cause problem because both are 4-byte data type, but of course on x64 it immedately caused an exception.&lt;br /&gt;2. I didn&#39;t know (shame on me) that 64 bit assemblies have different headers. x86 files have PE32 and 64 bit assemblies have PE32+ header. The difference between the two is little, but enough to make my positioning algorithm fail.&lt;br /&gt;&lt;br /&gt;The good news is that I have fixed both problems and now DILE is working correctly on x64 OS also. Actually, I have tested it on Windows Server 2003 x64.&lt;br /&gt;There are no other improvements for now though, only a few more bug fixes (see change log).&lt;br /&gt;&lt;br /&gt;zip file (x86): &lt;a href=&quot;http://downloads.sourceforge.net/dile/dile_v0_2_5_x86.zip?modtime=1172396663&amp;big_mirror=0&quot; target=&quot;_blank&quot;&gt;dile_v0_2_5_x86.zip&lt;/a&gt;&lt;br /&gt;zip file (x64): &lt;a href=&quot;http://downloads.sourceforge.net/dile/dile_v0_2_5_x64.zip?modtime=1172396650&amp;big_mirror=0&quot; target=&quot;_blank&quot;&gt;dile_v0_2_5_x64.zip&lt;/a&gt;&lt;br /&gt;readme.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/readme.txt&quot; target=&quot;_blank&quot;&gt;readme.txt&lt;/a&gt;&lt;br /&gt;license.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/license.txt&quot; target=&quot;_blank&quot;&gt;license.txt&lt;/a&gt;&lt;br /&gt;change_log.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/change_log.txt&quot; target=&quot;_blank&quot;&gt;change_log.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just a few screenshots to keep this old habit + prove that DILE is really x64 compatible:&lt;br /&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/dile_large_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/dile_small_1.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Disassembled 64-bit assembly&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/dile_large_2.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_5_2007_02_25/dile_small_2.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Debugging DILE with DILE on x64 OS&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;One note: the DockPanelSuite seems to have some problem with x64. Panels look weird for me. But I think it&#39;s not a DILE bug. Actually, the second screenshot shows that the DockPanelSuite throws an ArgumentOutOfRangeException.&lt;br /&gt;&lt;br /&gt;Next step: making Flash tutorials for DILE...</description><link>http://pzsolt.blogspot.com/2007/02/dile-v025-64-bit-compatible.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-1619820931283120736</guid><pubDate>Tue, 14 Nov 2006 22:21:00 +0000</pubDate><atom:updated>2006-11-14T23:22:01.678+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DILE</category><title>DILE v0.2.4</title><description>Here is the 0.2.4 version of DILE, as I promised earlier. I really hope that it&#39;s lot more stable and easier to use now...&lt;br /&gt;As always, the important files first:&lt;br /&gt;&lt;br /&gt;zip file: &lt;a href=&quot;https://sourceforge.net/project/showfiles.php?group_id=112895&quot; target=&quot;_blank&quot;&gt;dile_v0_2_4.zip&lt;/a&gt;&lt;br /&gt;readme.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/readme.txt&quot; target=&quot;_blank&quot;&gt;readme.txt&lt;/a&gt;&lt;br /&gt;license.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/license.txt&quot; target=&quot;_blank&quot;&gt;license.txt&lt;/a&gt;&lt;br /&gt;change_log.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/change_log.txt&quot; target=&quot;_blank&quot;&gt;change_log.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No doubt, there are two very important improvements: the new Object Viewer window and having context menus almost everywhere. Both of these increase the usability of DILE a lot.&lt;br /&gt;But here are some other improvements in detail (check the change log for a full list):&lt;ul&gt;&lt;li&gt;completely rewritten (from &quot;scratch&quot;) the Object Viewer form, now it&#39;s multi-thread, lot more reliable, it has log functionality, evaluations can be aborted and displayed information is lot more complete (no fields or properties should be missing)&lt;/li&gt;&lt;li&gt;changed the structure of displayed nodes in the Project Explorer: types are grouped by namespaces (hopefully this improves usability)&lt;/li&gt;&lt;li&gt;redesigned the Quick Search Settings form&lt;/li&gt;&lt;li&gt;several panels (modules, threads, local variables, arguments, watch, auto objects, callstack) use lazy-initialization to display information which means that they refresh their contents only when they&#39;re visible&lt;/li&gt;&lt;li&gt;made evaluation aborting more robust and reliable&lt;/li&gt;&lt;li&gt;added set IP (instruction pointer, basically it&#39;s like the Set next statement in VS)&lt;/li&gt;&lt;li&gt;added Watch Panel (every expression that is added to the panel will be evaluated after each step)&lt;/li&gt;&lt;li&gt;added a text displayer form that can be used to display text with or without escape characters, format text as xml or display text as html&lt;/li&gt;&lt;li&gt;added context menu to every ListView and DataGrid control; the menu allows you to copy values to clipboard or display them in the text displayer form, and also contains custom actions when available&lt;/li&gt;&lt;li&gt;fixed bug: breakpoints were not set in assemblies which had different assembly and module name (e.g.: mscorlib)&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And screenshots of the new features:&lt;table width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_large_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_small_1.png&quot;&gt;&lt;/a&gt;&lt;br&gt;The new Object Viewer window&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_large_2.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_small_2.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Text displayer window&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_large_3.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_small_3.png&quot;&gt;&lt;/a&gt;&lt;br&gt;The new context menu&lt;/td&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_large_4.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_small_4.png&quot;&gt;&lt;/a&gt;&lt;br&gt;&quot;Set IP&quot; to instruction feature&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_large_5.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_4_2006_11_14/dile_small_5.png&quot;&gt;&lt;/a&gt;&lt;br&gt;&quot;Add module to project&quot; option in the Object Viewer&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Don&#39;t hesitate to contact me with problems or ideas regarding DILE. :-)</description><link>http://pzsolt.blogspot.com/2006/11/dile-v024.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-6928966041104128840</guid><pubDate>Tue, 07 Nov 2006 22:18:00 +0000</pubDate><atom:updated>2006-11-07T23:18:31.039+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">Singapore</category><title>A &quot;little&quot; change... moving to Singapore</title><description>This time another personal post.&lt;br /&gt;As you might know, &lt;a href=&quot;http://ayulittleone.blogsome.com&quot; target=&quot;_blank&quot;&gt;my wife&lt;/a&gt; is Indonesian. We have been planning for a while now to move from Hungary back to Asia. And after returning from &lt;a href=&quot;http://pzsolt.blogspot.com/2006/05/1-month-holiday.html&quot; target=&quot;_blank&quot;&gt;our trip&lt;/a&gt; this June, we have started to seriously look for a job in Singapore. I am really lucky as I have managed to get one there. My visa is already approved, my contract is signed and in the beginning of December (on 4th to be exact) we&#39;ll move there.&lt;br /&gt;&lt;br /&gt;Both me and my wife agree that Singapore must be a good place for us. For her it will be easier to live there as she can be closer to her parents and she can communicate with other people more easily (Hungarian language is quite difficult and most of the Hungarians can&#39;t speak English unfortunately). For me, it&#39;s a good opportunity to learn new things and I really like Asia and South-East Asian mentality thus I don&#39;t think it&#39;ll be difficult to adapt. However, leaving my parents in Hungary won&#39;t be easy... :-(&lt;br /&gt;&lt;br /&gt;Of course, all this has some effect on DILE as well. Before we move I&#39;ll release a new version. No doubt, this should be the best so far. :-)&lt;br /&gt;I&#39;ve finished all the changes that I planned, and there are some - I believe - really useful new features. I&#39;ve, for example, completely rewritten the Object Viewer and added context menu almost everywhere.&lt;br /&gt;I have also spent lots of time on trying to find bugs (and fixed all of them). I think it&#39;s more stable now.&lt;br /&gt;&lt;br /&gt;Actually, in my current workplace for the last 2-3 months most of the time I had to fix bugs and DILE helped a lot. In several cases it &quot;saved life&quot; because I often had to debug on servers where VS wasn&#39;t installed. I was also glad to see that some of my collegues were interested in it and tried to use it. At last, I could see where I should improve the program. I even received a feedback letting me know that DILE is a little bit complicated to use for the first time. I&#39;m therefore planning to create some kind of Flash tutorial, but I think I&#39;ll have the time for that only after moving to Singapore.&lt;br /&gt;&lt;br /&gt;Anyway, once everything is settled in my new place, I&#39;ll continue working on DILE. So for now, expect some break but I&#39;ll be back! :-)&lt;br /&gt;&lt;br /&gt;P.S.: I have changed to the new beta blogger... I hope it won&#39;t crash. :-)&lt;br /&gt;P.S.: Does anyone know a good, _free_ tool for recording from screen in Flash format?</description><link>http://pzsolt.blogspot.com/2006/11/little-change-moving-to-singapore.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-115670572677588623</guid><pubDate>Sun, 27 Aug 2006 19:08:00 +0000</pubDate><atom:updated>2006-11-07T20:30:49.594+01:00</atom:updated><title>VS2005 QuickWatch &amp;quot;bug&amp;quot; + DILE v0.2.3</title><description>&lt;p&gt;I&#39;ll start with the shorter news. I found an interesting&amp;nbsp;&quot;bug&quot; in Visual Studio 2005:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Create a new project in VS2005.  &lt;li&gt;Don&#39;t write any code in it, just start debugging.  &lt;li&gt;Write the following expression in the Quick Watch window and get it evaluated:&lt;br&gt;new Guid[] {Guid.Empty}&lt;br&gt;The displayed value will be an error message:&lt;br&gt;&quot;Cannot dereference expression. The pointer is not valid.&quot;&lt;br&gt;*sigh* I know this error message too well (the &quot;advantages&quot; of developing a&amp;nbsp;debugger :-)).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;If you include some code&amp;nbsp;in your project that uses Guids (e.g.: Guid guid = Guid.Empty;) then the expression will be evaluated correctly.&lt;/p&gt; &lt;p&gt;It&#39;s really not a huge bug,&amp;nbsp;rather just&amp;nbsp;fun to know about it. :-)&lt;br&gt;I&amp;nbsp;submitted this problem&amp;nbsp;to &lt;a href=&quot;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=180715&quot; target=&quot;_blank&quot;&gt;Ladybug also&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And now the good news: DILE v0.2.3!&lt;br&gt;The usual files can be found here:&lt;/p&gt; &lt;p&gt;zip file: &lt;a href=&quot;http://prdownloads.sourceforge.net/dile/dile_v0_2_3.zip?download&quot; target=&quot;_blank&quot;&gt;dile_v0_2_3.zip&lt;/a&gt;&lt;br&gt;readme.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/readme.txt&quot; target=&quot;_blank&quot;&gt;readme.txt&lt;/a&gt;&lt;br&gt;license.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/license.txt&quot; target=&quot;_blank&quot;&gt;license.txt&lt;/a&gt;&lt;br&gt;change_log.txt: &lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/change_log.txt&quot; target=&quot;_blank&quot;&gt;change_log.txt&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The new features are the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;expression evaluation during debugging (generics are not supported yet)  &lt;li&gt;startup assembly/program can be specified along with the arguments and working directory  &lt;li&gt;debugging can be started with stepping (in such cases DILE will pause the debuggee when the first IL code is hit)  &lt;li&gt;run to cursor  &lt;li&gt;stop debuggee only when an unhandled exception is thrown  &lt;li&gt;filtering&amp;nbsp;debug events that are shown in the Debug Output Panel  &lt;li&gt;automatic detection of&amp;nbsp;the .NET Framework version when attaching to a process  &lt;li&gt;refreshing displayed processes in the Attach to process window  &lt;li&gt;adding not loaded assemblies to the DILE project made easier (right click in the call stack on an &quot;Unknown method...&quot; line and choose &quot;Add the referenced module to the project&quot; option from the popup menu)  &lt;li&gt;Object viewer menu to quickly display the Object Viewer window during debugging (shortcut by default: Ctrl + W)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;No doubt, I consider the first to be the most important (and that took&amp;nbsp;the most time to implement).&lt;br&gt;I think&amp;nbsp;a very useful thing during debugging is that it is possible to call methods, check properties and inspect variables&amp;nbsp;and not just&amp;nbsp;local variables or arguments. From now on it is possible to do these kind of things in DILE also. Here are a few example expressions that I&amp;nbsp;used for testing:&lt;/p&gt; &lt;p&gt;5 * -6&lt;br&gt;1 + 2 * 3 - 10 / 5 * 5&lt;br&gt;(1 + 2 * 3 - 10 / 5 * 5).ToString()&lt;br&gt;(-5).ToString()&lt;br&gt;new object() + &quot;a&quot;&lt;br&gt;&quot;abc&quot;.Length.ToString()&lt;br&gt;System.Type.GetType(&quot;System.String&quot;).GUID.ToByteArray()&lt;br&gt;TestApplication.DebugTest.CreateOperatorTest4(&quot;op1&quot;) | true&lt;br&gt;TestApplication.DebugTest.ParamsTest2()&lt;br&gt;TestApplication.DebugTest.ParamsTest2(5, 6)&lt;br&gt;System.String.Format(&quot;{0}{1}{2}{3}{4}&quot;, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;)&lt;br&gt;new object[] {4, &quot;a&quot;, 5}&lt;br&gt;((System.Exception){exception}).Message&lt;/p&gt; &lt;p&gt;At least these should be evaluated correctly. :-)&lt;br&gt;Usage of overloaded operators is also implemented, just like automatic conversions (implicit/explicit cast operators are also used if it&#39;s necessary).&lt;br&gt;Currently DILE uses the debugging API that is included in the .NET v1.0/v1.1. This means that the functionality is&amp;nbsp;similar to VS 2003. However, there are some expressions that VS 2003 can&#39;t evaluate but DILE can (like creating new arrays).&lt;/p&gt; &lt;p&gt;And as always, here are a few screenshots of the new features:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table width=&quot;100%&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_large_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_small_1.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Evaluating a System.String.Format() method call&lt;/td&gt; &lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_large_2.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_small_2.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Evaluating an argument&#39;s field (while debugging Windows Live Writer :-))&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_large_3.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_small_3.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Specifying startup arguments&lt;/td&gt; &lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_large_4.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_small_4.png&quot;&gt;&lt;/a&gt;&lt;br&gt;New Attach to process window (not necessary to manually choose the .NET Framework version)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;middle&quot;&gt;&lt;a href=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_large_5.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.freewebtown.com/pzsolt/dile/v0_2_3_2006_08_27/dile_small_5.png&quot;&gt;&lt;/a&gt;&lt;br&gt;Adding a not loaded assembly from the Call Stack Panel&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;So, that&#39;s it. I hope DILE has become more useful and worthed the waiting.&lt;/p&gt; &lt;p&gt;My plans about the next version is, of course, to fix the bugs first of all.&amp;nbsp;And I&#39;ll spend some time to make the UI more usable. I&#39;m not very satisfied with the grids... I think there are already lots of useful features in DILE but the UI &quot;is a little bit behind the functionalities&quot;. And 1 more thing that I plan to include in the next version is setting the IP and this will mean some UI change as well.&lt;/p&gt; &lt;p&gt;As always, please let me know if you find any bug (I&#39;m sure, both the parser and the evaluator algorithm is not perfect yet), or have any suggestion.&lt;/p&gt; &lt;p&gt;P.S.: I post this entry from Windows Live Writer. I hope the post will really look like in the editor. :-)&lt;/p&gt;</description><link>http://pzsolt.blogspot.com/2006/08/vs2005-quickwatch-dile-v023.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9566251.post-115273314621066930</guid><pubDate>Thu, 13 Jul 2006 08:35:00 +0000</pubDate><atom:updated>2006-11-07T20:30:49.475+01:00</atom:updated><title>DILE in the Windows Developer Power Tools book</title><description>&lt;a href=&quot;http://www.oreilly.com/&quot; target=&quot;_blank&quot;&gt;O&#39;Reilly&lt;/a&gt; will soon be publishing its new book entitled &lt;a href=&quot;http://www.amazon.com/gp/product/0596527543/sr=8-1/qid=1152586726/ref=pd_bbs_1/104-9056395-7129507?ie=UTF8&quot; target=&quot;_blank&quot;&gt;&quot;Windows Developer Power Tools&quot;&lt;/a&gt; by &lt;a href=&quot;http://frazzleddad.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Jim Holmes&lt;/a&gt; and &lt;a href=&quot;http://www.dotavery.com/blog/&quot; target=&quot;_blank&quot;&gt;James Avery&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is an excerpt of what Jim Holmes has got to say about it on his &lt;a href=&quot;http://frazzleddad.blogspot.com/2006/07/announcing-our-book-windows-developer.html&quot;&gt;blog&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;The book is around 1100 pages of goodness on open source and freeware tools you can use to improve your software development work. The book’s all about using tools to bring value to the entire development cycle from writing code to testing to lifecycle management. We’ve got something like 170 tools from Anthem.NET to Sysinternals RegMon to Bugzilla. We chose tools which help improve the quality of code you write, or help improve your productivity as a developer.&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you wondered why I mentioned all this--which I know you do; is because DILE has got a small article in it (click &lt;a href=&quot;http://iterativerose.com/WinDevPowerTools/TOC.aspx&quot;&gt;here&lt;/a&gt; to see the table of contents and &lt;a href=&quot;http://iterativerose.com/WinDevPowerTools/WinDevPowerTools.aspx&quot;&gt;here&lt;/a&gt; for the sample chapters).&lt;br /&gt;&lt;br /&gt;A few months ago Jim sent me an e-mail to ask whether I&#39;d like to contribute an article about DILE, so there it is. The book also features other tools, such as: ildasm, Reflector, CLRProfiler, etc. My, those are quite big names there! :-) As for the article about DILE, it is written by me and extensively edited by &lt;a href=&quot;http://ayulittleone.blogsome.com&quot; target=&quot;_blank&quot;&gt;my wife&lt;/a&gt; (and Jim also, I guess :-) ). Anyways I hope it can also serve as a small help/introduction for DILE.&lt;br /&gt;&lt;br /&gt;I&#39;m really looking forward to having the book. I&#39;ll surely read all the 1100 pages. That&#39;s all for now and back to work. I still have to fix a few things about the debug expression evaluation. :-)</description><link>http://pzsolt.blogspot.com/2006/07/dile-in-windows-developer-power-tools.html</link><author>noreply@blogger.com (Zsozso)</author><thr:total>1</thr:total></item></channel></rss>