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

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

Advertisement

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.

Blog at WordPress.com.