Viewing .NET Source Code

Introduction

When you open an event in the Dashboard, OverOps displays the decompiled application MSIL and projects the runtime variable data onto it. For .NET running on the CLR, in order to display annotations, OverOps requires that you attach the original source code to the OverOps Agent. This procedure can also be applied when using a code weaver that expands your MSIL with large amounts of synthetic code.

Attaching your source code to OverOps involves a minor customization of the build steps - per environment. For the complete steps, see below.

There are a number of ways to display the source code in OverOps including:

🚧

Obfuscated Code may not be Supported

OverOps may not support obfuscated code that can’t be decompiled (or when decompiled generates garbage). In these cases, you'll need to attach the source code.

Attaching Source Code Folders

SaaS and On-Premise Deployments

Native source code that co-resides on the machine on which the OverOps Collector is running can be attached to OverOps through the environment variable setting or property settings in the agent.properties file.

To attach the source code to the machine running the OverOps Collector:

  1. Place a directory with the source code on the machine on which the OverOps Collector is running using the agent.properties file.

📘

Note

Although the command line option (or agent property) is provided to the OverOps Micro-Agent on the machine on which the application is running, the source code path in the takipi.sources.path refers to a folder that resides on the machine on which the Collector is running. Usually the Collector will be installed on a different machine than the one on which the application being monitored is installed The given path does not need to exist on the application server machine, only the OverOps Collector machine.

  1. Add the path to the agent properties:
    takipi.sources.path=/your/source/dir/here
  2. Restart the CLR for the new setting to take effect.
  3. To see the newly attached source code in the ARC screens for new and existing events, use one of the following methods
    4a. Restart the OverOps Collector
    4b. Click the button in the ARC screen: "Refresh All Sources".
328

Hybrid Deployments

  1. On the Variable Store (storage) machine, the sources folder is relative to the storage main folder:
opt/takipi-storage/storage

Sources should be deployed with a version under a specific folder:

/opt/takipi-storage/storage/sources/v1/app1
  1. On the Micro-Agent machine, start the Micro-Agent with the new remote sources path:
takipi.remote.sources.path=/sources/v1```

Note that you can add multiple folders with a ":" separator.

[block:callout]
{
  "type": "success",
  "title": "Tip",
  "body": "You're adding the source code to the Collector box, where the code will reside. Use the takipi.sources.path=/your/source/dir/here property in the agent.properties file to point to this.\n\nNote that this property is only passed through the Micro-Agent to the Collector, for the Collector to use (so the Micro-Agent isn't looking at that folder).\n\nYou'll also have to go through the PDBs you generated from the same version of the DLLs that are running in that sources path, since the pointers in the DLLs need to match the PDB version with the symbols and variables.\n\nYou'll also want to look at new ARC screens, since the PDB data is loaded when we see the error."
}
[/block]

##Attaching Source Code for a Specific Event
If you decide not to attach the source code file to the application, you can choose to load it to a specific event.

To attach the source code to a specific event:
1. From the OverOps Dashboard, open the event.
2. From the ARC Screen, in the bottom left corner, click **Load Source Code.**


[block:image]
{
  "images": [
    {
      "image": [
        "https://files.readme.io/1d54e15-shot44.png",
        "shot44.png",
        290,
        104,
        "#333c43"
      ]
    }
  ]
}
[/block]

3. Click **Select file** and browse for the source code file.
4. When finished, click **Done**.

The source code is now available for the event to which it was attached.