Runtime Flow blog (Understanding a control flow in a running .NET application)

July 22, 2010

Runtime Flow v1.1.6 released

Filed under: Uncategorized — Sergey Vlasov @ 3:48 pm

Runtime Flow v1.1.6 released – added the Summary only monitoring option, slightly improved monitoring performance, fixed the null reference exception when starting Visual Studio with the /setup option.

Advertisements

Summary only monitoring

Filed under: Uncategorized — Sergey Vlasov @ 2:48 pm

The next version of Runtime Flow adds the Summary only monitoring option for a quick overview of an application:

Monitoring options

Monitoring options

While Full monitoring monitors each function call, Summary only detects only the first function usage. The Runtime Flow window is empty in this mode and the Runtime Summary window shows almost the same content as in the full monitoring mode:

Summary only monitoring results

Summary only monitoring results

The only visible difference is in the Clear command usage. In the Full monitoring mode, after clearing the events, each function call adds a function to the summary window. In the Summary only mode – only functions that was never used before will be added to the summary window when called.

Summary only monitoring is very fast and well suited for an application reconnaissance with the empty module filter.

July 15, 2010

Runtime Flow v1.1.5 released

Filed under: Uncategorized — Sergey Vlasov @ 5:43 am

Runtime Flow v1.1.5 released – added display of field values, added display of last function call’s parameters in duplicate calls, highlighted a function name in a flow.

Parameters and return value ranges

Filed under: Uncategorized — Sergey Vlasov @ 5:35 am

Previously for duplicate function calls only the first call’s parameters and return value were displayed. In the next version of Runtime Flow the last call’s parameters and return value were added:

Parameters and return value ranges

Parameters and return value ranges

You can see the return values range example in the CompareWithString function call.

Class field values

Filed under: Uncategorized — Sergey Vlasov @ 5:22 am

The new version of Runtime Flow adds ability to show field values of objects in parameters and return values:

Field values of an object and a struct

Field values of an object and a struct


Currently only simple field types are displayed and only the fields defined by the class itself. Runtime Flow shows runtime object type – while the first parameter of the OnTextBoxGotFocus function is object, actual TextBox type is displayed.

Auto C# properties are implemented using <field_name>k__BackingField fields. Runtime Flow shows them as <field_name>:

C# auto properties

C# auto properties

Enums are displayed as the enum type and the value field:

Enum value

Enum value

July 6, 2010

Monitoring ASP.NET applications

Filed under: Uncategorized — Sergey Vlasov @ 7:35 am

To monitor an ASP.NET application you should start an ASP.NET development server under Runtime Flow monitoring and then just browse to the application in a web browser. Visual Studio 2010 example:

Customized Run settings to start ASP.NET monitoring in VS 2010

Customized Run settings to start ASP.NET monitoring in VS 2010


An ASP.NET web application created in VS 2010

An ASP.NET web application created in VS 2010


Runtime Flow of the ASP.NET web application in VS 2010

Runtime Flow of the ASP.NET web application in VS 2010

Visual Studio 2008 example:

Customized Run settings to start ASP.NET monitoring in VS 2008

Customized Run settings to start ASP.NET monitoring in VS 2008


Runtime Flow of an ASP.NET web application in VS 2008

Runtime Flow of an ASP.NET web application in VS 2008

To go to the source when clicking on a function in a flow, currently you need to manually copy the corresponding pdb file to the temporary ASP.NET files folder:

Temporary ASP.NET files folder

Temporary ASP.NET files folder

Runtime Flow v1.1.3 released

Filed under: Uncategorized — Sergey Vlasov @ 2:52 am

Runtime Flow v1.1.3 released – added ability to monitor Silverlight 4 applications, added ability to monitor processes running with the low integrity level, added the Stop monitoring when the command completes option, added the Stop monitoring command, added wait cursors during search, improved overall performance by using in memory storage.

July 5, 2010

Monitoring Silverlight 4 applications

Filed under: Uncategorized — Sergey Vlasov @ 5:52 pm

Runtime Flow v1.1.3 adds ability to monitor Silverlight 4 applications. A Silverlight 4 application runs in a browser and to start monitoring it you should specify your preferred browser and a startup page in the Customized Run dialog:

Internet Explorer Customized Run settings

Internet Explorer Customized Run settings


An Silverlight application in Internet Explorer

An Silverlight application in Internet Explorer


Firefox Customized Run settings

Firefox Customized Run settings


An Silverlight application in Firefox

An Silverlight application in Firefox


Runtime Flow of the Silverlight application

Runtime Flow of the Silverlight application

There is one complication when using Internet Explorer in Windows Vista. When started, Internet Explorer creates separate low integrity process to display contents and exits the original process, stopping Runtime Flow monitoring. In this case you should uncheck the Stop monitoring when the command completes option and use the Stop button on the Runtime Flow toolbar (it is not necessary in Windows 7):

The new Stop monitoring toolbar button

The new Stop monitoring toolbar button

Clicking on a function in Runtime Flow currently doesn’t go to the source for Silverlight projects as the Silverlight runtime provides slightly limited information.

July 1, 2010

Members initialization difference between C# and C++

Filed under: Uncategorized — Sergey Vlasov @ 5:36 pm

Joe Duffy presented an interesting example where order of members initialization is different between C# and C++ in his On partially-constructed objects blog post. “In C#, member initializers run from most derived first, to least derived. In C++, however, member initializers run alongside the ordinary construction process.” I’ve traced his examples in Runtime Flow:

C# initialization

C# initialization

C++ initialization

C++ initialization

You see how in C# E’s member is constructed even before the D object, while in C++ E’s member is constructed the last. It is interesting to note that while logically members are initialized before constructors, technically constructors start first and then immediately initialize members.

Runtime Flow v1.1.2 released

Filed under: Uncategorized — Sergey Vlasov @ 2:16 pm

Runtime Flow v1.1.2 released – fixed occasional loss of events on application shutdown introduced in v1.1.1.

Blog at WordPress.com.