Windows Vista Forums

Diagnostic "pins" with .NET?
  1. #1


    Chris Johnson Guest

    Diagnostic "pins" with .NET?

    Hi all,

    Just a quick question as I'm not entirely certain what phrase to google for
    as all attempts so far have failed to illicit anything useful, and the best
    anaology I can think of comes from hardware :-)

    I'm curious as to whether there's some form of API in .NET that's the
    software equivalent of diagnostic pins on a circuit board? Essentially I'm
    want to have a bucket I can throw diagnostic message into in a
    fire-and-forget method, and not care whether there's something looking at
    the bucket (connected to the pin) or not. If nothing's listening, the
    message gets forgotten about.

    Ideally it needs to be lightweight with little latency -- the intention is
    to use the 'pin' as a performance diagnostic, so in normal situations,
    nothing would be connected. If there are problems, then we can attach to the
    pin and read timestamp messages. An event queue would be no good: queue
    would eventually fill-up and hang the code, unless there was extra logic in
    the code to clean the queue up, which could start getting messy. Performance
    counters won't really work either as that then requires a large chunk of
    logic to keep track of individual entities in order to create an "average
    latency" counter.

    Essentially it's analogous to attaching an oscilloscope to a circuit board
    and looking at the latency of stuff between two pins on a chip, etc.

    I suppose shared memory might be one possible solution, but I understand
    there's no CLR wrappers for shared memory (excluding third party
    extensions). If anyone's got ideas or pointers, I'd be grateful to hear
    them.

    Cheers,

    Chris






      My System SpecsSystem Spec

  2. #2


    Jon Skeet [C# MVP] Guest

    Re: Diagnostic "pins" with .NET?

    Chris Johnson <cej@xxxxxx> wrote:

    > Just a quick question as I'm not entirely certain what phrase to google for
    > as all attempts so far have failed to illicit anything useful, and the best
    > anaology I can think of comes from hardware :-)
    >
    > I'm curious as to whether there's some form of API in .NET that's the
    > software equivalent of diagnostic pins on a circuit board? Essentially I'm
    > want to have a bucket I can throw diagnostic message into in a
    > fire-and-forget method, and not care whether there's something looking at
    > the bucket (connected to the pin) or not. If nothing's listening, the
    > message gets forgotten about.
    Sounds like you want a logging framework.

    Personally I like log4net:
    http://logging.apache.org/log4net/

    It'll be up to you what kind of log sinks you want to use (and you
    don't need to make that decision when writing the code which calls into
    log4net, of course).

    --
    Jon Skeet - <skeet@xxxxxx>
    http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
    World class .NET training in the UK: http://iterativetraining.co.uk

      My System SpecsSystem Spec

  3. #3


    Cowboy \(Gregory A. Beamer\) Guest

    Re: Diagnostic "pins" with .NET?

    You can do this with delegates. you have to code safe, to avoid errors when
    there are no subscribers (unless you add a "default" subscriber like a log).
    To have it so outside software can hook in, you will need to build a
    lightweight publisher/subscriber type of model. I do not have links right
    now for these, but a google on delegates (or better yet, multicast
    delegates) and publisher/subscriber (not sure how to frame that one) should
    yield some patterns and sample code, if nothing else.

    --
    Gregory A. Beamer
    MVP, MCP: +I, SE, SD, DBA

    *************************************************
    | Think outside the box!
    |
    *************************************************
    "Chris Johnson" <cej@xxxxxx> wrote in message
    news:%23zZDyxGgIHA.4744@xxxxxx

    > Hi all,
    >
    > Just a quick question as I'm not entirely certain what phrase to google
    > for as all attempts so far have failed to illicit anything useful, and the
    > best anaology I can think of comes from hardware :-)
    >
    > I'm curious as to whether there's some form of API in .NET that's the
    > software equivalent of diagnostic pins on a circuit board? Essentially I'm
    > want to have a bucket I can throw diagnostic message into in a
    > fire-and-forget method, and not care whether there's something looking at
    > the bucket (connected to the pin) or not. If nothing's listening, the
    > message gets forgotten about.
    >
    > Ideally it needs to be lightweight with little latency -- the intention is
    > to use the 'pin' as a performance diagnostic, so in normal situations,
    > nothing would be connected. If there are problems, then we can attach to
    > the pin and read timestamp messages. An event queue would be no good:
    > queue would eventually fill-up and hang the code, unless there was extra
    > logic in the code to clean the queue up, which could start getting messy.
    > Performance counters won't really work either as that then requires a
    > large chunk of logic to keep track of individual entities in order to
    > create an "average latency" counter.
    >
    > Essentially it's analogous to attaching an oscilloscope to a circuit board
    > and looking at the latency of stuff between two pins on a chip, etc.
    >
    > I suppose shared memory might be one possible solution, but I understand
    > there's no CLR wrappers for shared memory (excluding third party
    > extensions). If anyone's got ideas or pointers, I'd be grateful to hear
    > them.
    >
    > Cheers,
    >
    > Chris
    >
    >
    >


      My System SpecsSystem Spec

  4. #4


    John Vottero Guest

    Re: Diagnostic "pins" with .NET?

    "Chris Johnson" <cej@xxxxxx> wrote in message
    news:%23zZDyxGgIHA.4744@xxxxxx

    > Hi all,
    >
    > Just a quick question as I'm not entirely certain what phrase to google
    > for as all attempts so far have failed to illicit anything useful, and the
    > best anaology I can think of comes from hardware :-)
    >
    > I'm curious as to whether there's some form of API in .NET that's the
    > software equivalent of diagnostic pins on a circuit board? Essentially I'm
    > want to have a bucket I can throw diagnostic message into in a
    > fire-and-forget method, and not care whether there's something looking at
    > the bucket (connected to the pin) or not. If nothing's listening, the
    > message gets forgotten about.
    >
    Look at System.Diagnostics.TraceSource.


      My System SpecsSystem Spec

Diagnostic "pins" with .NET? problems?

Similar Threads
Thread Thread Starter Forum Replies Last Post
Vista only boots up to "Startup Error" Diagnostic Tool after SP1 BigFeat Windows Updates 13 24 Aug 2008
"msdt" (microsoft Diagnostic Tool) hdbg62 General Discussion 6 22 Apr 2008
Vista not wotking with "My Computer" or "Control Panel", "Screen Saver" Platebanger Vista General 6 05 Feb 2008
"Diagnostic Policy Service" crashes on Vista Basic Paul_Lucy Vista installation & setup 0 31 Jul 2007
Tcp/IP diagnostic tool - "Process Explorer" semedao Vista General 2 16 Mar 2007