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

January 13, 2011

Runtime Flow v1.2.5 released

Filed under: Uncategorized — Sergey Vlasov @ 3:32 am

Runtime Flow v1.2.5 released – fixed inability to find a startup project inside a solution folder.

Advertisements

September 25, 2010

Runtime Flow v1.2.2 released

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

Runtime Flow v1.2.2 released – fixed an unhandled exception for solutions with unloaded projects.

September 12, 2010

Runtime Flow v1.2.1 released

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

Runtime Flow v1.2.1 released – added the portable edition, added browse buttons to the Customized run dialog, added the E-mail support button to the toolbar.

Portable Edition

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

I’ve created the portable Runtime Flow edition that can work without Visual Studio and almost without installation. It should be perfect for troubleshooting problems after deployment. The main window contains the toolbar that performs exactly the same functions as the toolbar integrated with Visual Studio:

Runtime Flow portable edition

Runtime Flow portable edition

You can download the portable edition as a zip archive containing following files:

Runtime Flow portable files

Runtime Flow portable files

The only installation step required is profiler COM class registration. If you don’t have admin rights and you only need to monitor applications under the current account, run “Register profiler for the current user.cmd”. If you have admin rights, it is recommended to run “Register profiler for the local machine.cmd”. When no longer needed, you can unregister the profiler with the appropriate “Unregister…” script.

Runtime Flow portable requires .NET 3.5 SP1 to be installed (or .NET 3.0 plus VS 2008 C++ runtime) when running on Windows XP and Vista. On Windows 7 no additional components required.

Download link: Runtime Flow portable v1.2.1.

September 4, 2010

Runtime Flow v1.2.0 released

Filed under: Uncategorized — Sergey Vlasov @ 4:56 pm

Runtime Flow v1.2.0 released:

  • added persistence for monitoring options and customized run settings,
  • added the Copy as text command to the Flow and Summary windows,
  • added target window opening if it was hidden on the locate in other window command,
  • added function return type for tail calls,
  • changed parenthesis around object data to curly braces,
  • disabled filter buttons when empty class name is selected in the Summary window,
  • fixed filter expression for functions with empty class name,
  • fixed not visible tooltips for floating windows.

August 26, 2010

Troubleshooting Visual Studio LightSwitch IDE extension installation using Runtime Flow

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

With the Visual Studio LightSwitch Beta 1 release this week, I wanted to verify that Text Sharp – Visual Studio 2010 text clarity tuner is compatible with the standalone LightSwitch installation:

Visual Studio LightSwitch Beta standalone IDE startup

Visual Studio LightSwitch Beta standalone IDE startup

Unfortunately, running the TextSharp_12.vsix installer gave me the “This extension is not installable on any currently installed products” error:

Visual Studio Extension Installer error

Visual Studio Extension Installer error

.vsixmanifest for Text Sharp contained the following list of supported products:

    <SupportedProducts>
      <VisualStudio Version="10.0">
        <Edition>Pro</Edition>
      </VisualStudio>
    </SupportedProducts>

I looked for documentation specifying what needs to be added for LightSwitch, bug found absolutely nothing. Then I decided to look inside the vsix installer using Runtime Flow.

With the error message box on the screen, using Process Explorer I found the path to the vsix installer and that its command line contained just path to TextSharp_12.vsix. I installed Runtime Flow on the same machine for LightSwitch IDE (no problems this time) and set up customized monitoring run:

Runtime Flow customized run settings for VSIX installer monitoring

Runtime Flow customized run settings for VSIX installer monitoring

I received the same installation error under Runtime Flow monitoring and tried to find the call to show message box (that should be close to the place when the error occurs). I thought it would be the last call in the Runtime Flow tree, but after opening several levels of calls I didn’t feel that I was going in the right direction:

Going to the last call in the Runtime Flow tree

Going to the last call in the Runtime Flow tree

Then I opened the Runtime Summary window and for VSIXInstaller.exe several SupportedSKU classes immediately caught my attention:

Classes and functions called in the VSIX installer

Classes and functions called in the VSIX installer

I selected get_SupportedSKUsList, clicked Locate in flow and appeared at the beginning of a very interesting sequence of calls:

Supported editions check in the VSIX installer

Supported editions check in the VSIX installer

It was clearly visible that the supported edition strings were compared with VSLS and returned false. Indeed adding the VSLS edition to .vsixmanifest in Text Sharp solved the original problem:

    <SupportedProducts>
      <VisualStudio Version="10.0">
        <Edition>Pro</Edition>
        <Edition>VSLS</Edition>
      </VisualStudio>
    </SupportedProducts>

Successful start of the Text Sharp installer

Successful start of the Text Sharp installer


Successful Text Sharp installation

Successful Text Sharp installation

August 4, 2010

Runtime Flow v1.1.7 released

Filed under: Uncategorized — Sergey Vlasov @ 8:15 am

Runtime Flow v1.1.7 released:

  • added the Monitoring filter option,
  • added the Locate in summary toolbar command,
  • added Go to source toolbar buttons,
  • added ability to find debug information even after exe was moved to another directory,
  • added thrown exception object info,
  • added an icon to notification tooltips,
  • added the No more found notification tooltip,
  • added the Options button to the Customized run dialog,
  • enabled tooltips for disabled toolbar buttons,
  • changed dark red color for the selected function to the bold font weight,
  • removed module filter from the Customized run dialog,
  • removed automatic go to source on function selection,
  • removed bring into view selected item after failed search,
  • fixed C++/CLR application files lock after going to source.

Monitoring filter

Filed under: Uncategorized — Sergey Vlasov @ 8:09 am

The next version of Runtime Flow adds extensive filtering options. Filtering out unneeded functions improves monitoring performance and simplifies monitoring log. It’s now possible to filter by module, class and function creating very specific boolean expressions:

Monitoring filter option

Monitoring filter option

The monitoring filter is applied at the beginning of a monitoring session.

You can use == and != between Module, Class, Function and a filter string. If the filter string contains spaces or special characters it should be quoted:

Module == "C:\Program Files\SurF.exe"

You can use the ! unary operator to negate expression and ||, && for OR and AND operations.

A filter string allows tail matching after delimiter. Thus Module == SurF.exe matches “C:\Program Files\SurF.exe”, but not “C:\Program Files\OverSurF.exe”. During matching class name contains its namespace: Class == FileSystemWatcher matches System.IO.FileSystemWatcher also due to the tail matching.

A filter string allows prefix matching by using * at the end: Module == C:\*. It also allows filter by namespace: Class == System.IO.*.

When monitoring a C++/CLR application, “native” functions are represented as the class <Module> and “native” class included in the function name. For example, to exclude classes and functions in the std namespace use Function != std.*.

true and false constants can be used to quickly enable or disable part of a filter. For example, adding || true at the end of a filter enables monitoring of all functions without deleting the whole filter expression.

All common filtering tasks can be applied just by using the new Include and Exclude buttons in the toolbars:

Include and Exclude buttons in the toolbars

Include and Exclude buttons in the toolbars

The buttons in the Runtime Flow toolbar allow filtering by function and the buttons in the Runtime Sumary toolbar allow filtering by function, class, namespace and module.

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.

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.

« Newer PostsOlder Posts »

Blog at WordPress.com.