<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">DebugInfo.com - Oleg Starodumov</title><subtitle type="html" /><id>http://msmvps.com/blogs/debuginfo/atom.aspx</id><link rel="alternate" type="text/html" href="http://msmvps.com/blogs/debuginfo/default.aspx" /><link rel="self" type="application/atom+xml" href="http://msmvps.com/blogs/debuginfo/atom.aspx" /><generator uri="http://communityserver.org" version="4.0.30619.63">Community Server</generator><updated>2005-06-27T07:40:00Z</updated><entry><title>Command line version of ModuleRescue</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2006/08/30/111279.aspx" /><id>/blogs/debuginfo/archive/2006/08/30/111279.aspx</id><published>2006-08-30T19:46:00Z</published><updated>2006-08-30T19:46:00Z</updated><content type="html">&lt;P&gt;Command line version of ModuleRescue is available (can be found &lt;A href="http://www.debuginfo.com/tools/cmdresc.html"&gt;here&lt;/A&gt;). &lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=111279" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>Debugging startup code of services and COM servers</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2006/08/04/106708.aspx" /><id>/blogs/debuginfo/archive/2006/08/04/106708.aspx</id><published>2006-08-04T17:57:00Z</published><updated>2006-08-04T17:57:00Z</updated><content type="html">&lt;P&gt;New article on my web site: &lt;A href="http://www.debuginfo.com/articles/debugstartup.html"&gt;Debugging startup code of services and COM servers&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Debugging the startup code of a service or an out-of-process COM server usually looks like a difficult task, especially if the service/server is running under a non-administrative user account. But in practice, there is a number of tools and techniques that can make this task much easier - almost as easy as debugging an interactive application.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=106708" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>StartDbg</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2006/08/04/106707.aspx" /><id>/blogs/debuginfo/archive/2006/08/04/106707.aspx</id><published>2006-08-04T17:53:00Z</published><updated>2006-08-04T17:53:00Z</updated><content type="html">&lt;P&gt;New tool on my web site: &lt;A href="http://www.debuginfo.com/tools/startdbg.html"&gt;StartDbg&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;StartDbg is a small tool that simplifies debugging of the startup code of services and COM server applications, even if they are running under non-administrative user accounts. In brief, it suspends the service or the COM server process for a predefined period of time, and allows us to attach debugger to the process while it is suspended. For additional information about the motivation behind creating this tool, take a look at this&amp;nbsp;&lt;A href="http://www.debuginfo.com/articles/debugstartup.html"&gt;article&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=106707" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>ClrDump updated</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2006/04/17/91419.aspx" /><id>/blogs/debuginfo/archive/2006/04/17/91419.aspx</id><published>2006-04-17T18:02:00Z</published><updated>2006-04-17T18:02:00Z</updated><content type="html">&lt;P&gt;&lt;A href="http://www.debuginfo.com/tools/clrdump.html"&gt;ClrDump&lt;/A&gt; has been updated. &lt;/P&gt;
&lt;P&gt;New features:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Additional command line parameters for clrdump.exe that allow to control the size of the minidump&lt;/LI&gt;
&lt;LI&gt;New API function, SetFilterOptions, that allows to control various aspects of the filter's functionality (currently it allows to specify whether to terminate the application immediately after the minidump has been created (the default), or pass control to the default exception handler provided by the operating system (which will usually report the error to the user via the standard Windows Error Reporting dialog and/or launch the registered just-in-time debugger)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=91419" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>ClrDump - Create small minidumps of .NET applications</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2006/02/26/84886.aspx" /><id>/blogs/debuginfo/archive/2006/02/26/84886.aspx</id><published>2006-02-26T19:34:00Z</published><updated>2006-02-26T19:34:00Z</updated><content type="html">&lt;P&gt;New&amp;nbsp;tool on my web site: &lt;A href="http://www.debuginfo.com/tools/clrdump.html"&gt;ClrDump&lt;/A&gt;&amp;nbsp;(Beta)&lt;/P&gt;
&lt;P&gt;ClrDump is an experimental set of tools that allow to produce small minidumps of managed applications. In the past, it was necessary to use full dumps (very large in size) if you needed to perform post-mortem analysis of a .NET application. ClrDump can produce small minidumps that contain enough information to recover the call stacks of all threads in the application. It supports .NET runtime versions 1.1 and 2.0.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=84886" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>WinDbg the easy way</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2006/02/19/84165.aspx" /><id>/blogs/debuginfo/archive/2006/02/19/84165.aspx</id><published>2006-02-19T09:22:00Z</published><updated>2006-02-19T09:22:00Z</updated><content type="html">&lt;P&gt;New article on my web site: &lt;A href="http://www.debuginfo.com/articles/easywindbg.html"&gt;WinDbg the easy way&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;This article introduces CDB debugger as an effective complement to Visual Studio debugger for various advanced debugging tasks. It shows how to install and configure CDB, and how to use its command line options and commands for retrieving useful information about the internal state of the debuggee – without interrupting the main debugging session in Visual Studio. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=84165" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>SymGetEx - Automatic symbol server support for Visual C++ 6.0 debugger</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/12/02/77613.aspx" /><id>/blogs/debuginfo/archive/2005/12/02/77613.aspx</id><published>2005-12-02T16:46:00Z</published><updated>2005-12-02T16:46:00Z</updated><content type="html">&lt;P&gt;
&lt;P&gt;New tool on my web site: &lt;A href="http://www.debuginfo.com/tools/symgetex.html"&gt;SymGetEx 1.0&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;SymGetEx is an addition to Visual Studio 6.0, which allows Visual C++ debugger to automatically download symbols from symbol servers. With automatic symbol server support, it is easy to keep system symbols up-to-date, regardless of the number of system updates and hotfixes installed on the computer. In turn, good symbols for system DLLs help you get complete and informative call stacks when debugging your applications.&lt;BR&gt;&lt;BR&gt;In the process of downloading symbols, SymGetEx provides detailed progress reports, which help to troubleshoot network failures and various symbol server issues. SymGetEx also allows to reduce unnecessary network traffic by maintaining the list of modules whose symbols should not be downloaded from the symbol server (exclusion list).&lt;BR&gt;&lt;BR&gt;SymGetEx allows to enable or disable symbol server access on the fly, ensuring that the debugger uses symbol server only when it is really needed, and does not consume computing resources at other times.&lt;BR&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=77613" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>Debugging custom filters for unhandled exceptions</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/10/12/70314.aspx" /><id>/blogs/debuginfo/archive/2005/10/12/70314.aspx</id><published>2005-10-12T12:39:00Z</published><updated>2005-10-12T12:39:00Z</updated><content type="html">&lt;p&gt;
New article on my web site:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/articles/debugfilters.html"&gt;Debugging custom filters for unhandled exceptions&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This article shows how to debug custom filters for unhandled exceptions, and how to ensure that 
our filter is always properly registered (which sometimes is not easy to do, especially if other components 
of the application want to register their own filters). We will also explore how the operating system 
registers and calls custom filters, and what system components may want to utilize custom 
filters for their own purposes (and thus interfere with our own filters).
&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=70314" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>Unexpected user breakpoint in NTDLL.DLL</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/09/01/64989.aspx" /><id>/blogs/debuginfo/archive/2005/09/01/64989.aspx</id><published>2005-09-01T10:51:00Z</published><updated>2005-09-01T10:51:00Z</updated><content type="html">&lt;p&gt;
New tip on my web site:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/tips/userbpntdll.html"&gt;http://www.debuginfo.com/tips/userbpntdll.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This tip explains the reasons of unexpected user breakpoints in NTDLL.DLL, which we can sometimes encounter when debugging our applications. 
&lt;/p&gt;

&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=64989" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>Excluding modules from symbol server search</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/08/22/63672.aspx" /><id>/blogs/debuginfo/archive/2005/08/22/63672.aspx</id><published>2005-08-22T08:53:00Z</published><updated>2005-08-22T08:53:00Z</updated><content type="html">&lt;p&gt;
I have added a new category to my web site - Debugging Tips:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/tips.html"&gt;http://www.debuginfo.com/tips.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Here is the first tip:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/tips/symsrvexlist.html"&gt;http://www.debuginfo.com/tips/symsrvexlist.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This tip shows how to improve the startup time of our debugging 
sessions by excluding some modules from symbol server search. 
It can be especially useful for applications that use 3rd party 
components whose symbols are not available on Microsoft symbol 
server.
&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=63672" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>New tool: ModuleRescue</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/07/14/57344.aspx" /><id>/blogs/debuginfo/archive/2005/07/14/57344.aspx</id><published>2005-07-14T09:59:00Z</published><updated>2005-07-14T09:59:00Z</updated><content type="html">&lt;p&gt;
New tool on my web site:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/tools/modulerescue.html"&gt;ModuleRescue&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
ModuleRescue can generate executable modules (.EXEs and .DLLs) from the module information stored in minidumps. The modules produced by the application are enough to let debuggers download symbols from the symbol server even if the real matching module is not available. It is useful in the situation when, while debugging a minidump, we cannot find matching module but know that symbols for the module are available on the symbol server. ModuleRescue can be also used to view the list of modules loaded by the application at the time when the minidump was created, and analyze such information as module load address, file and product version, availability of debug information. 
&lt;/p&gt;

&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=57344" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>Minidumps and matching modules</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/07/14/57342.aspx" /><id>/blogs/debuginfo/archive/2005/07/14/57342.aspx</id><published>2005-07-14T09:57:00Z</published><updated>2005-07-14T09:57:00Z</updated><content type="html">&lt;p&gt;
New article on my web site:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/articles/matchmodules.html"&gt;Minidumps and matching modules&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
In the process of debugging a minidump, matching modules are as important as matching symbols. If the debugger cannot find matching modules, it usually cannot load symbols and cannot show good call stacks and other kinds of important information. In this article we will explore how debuggers work with modules - where do they look for them, and what data do they use to check whether a module is matched. We will see how to configure the most popular debuggers to search for matching modules in correct places (module search path). We will also discuss situations when matching modules cannot be found, and try to find workarounds. 
&lt;/p&gt;

&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=57342" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry><entry><title>NTSD as a better Dr. Watson</title><link rel="alternate" type="text/html" href="/blogs/debuginfo/archive/2005/06/27/56125.aspx" /><id>/blogs/debuginfo/archive/2005/06/27/56125.aspx</id><published>2005-06-27T12:40:00Z</published><updated>2005-06-27T12:40:00Z</updated><content type="html">&lt;p&gt;
New article on my web site:&lt;br&gt;
&lt;a href="http://www.debuginfo.com/articles/ntsdwatson.html"&gt;NTSD as a better Dr. Watson&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Dr. Watson is probably the most popular just-in-time debugger for Windows applications. But do we have a better choice? This article discusses some limitations of Dr. Watson, and introduces another debugger, NTSD, which is more flexible, configurable, and capable of replacing Dr. Watson in many just-in-time debugging scenarios.
&lt;/p&gt;

&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=56125" width="1" height="1"&gt;</content><author><name>debug</name><uri>http://msmvps.com/members/debug/default.aspx</uri></author></entry></feed>