jaredpar's WebLog

Code, rants and ramblings of a programmer.

Browse by Tags

Tagged Content List
  • Blog Post: DebuggerDisplay attribute best practices

    The DebuggerDisplayAttribute is a powerful way to customize the way values are displayed at debug time.  Instead of getting a simple type name display, interesting fields, properties or even custom strings can be surfaced to the user in useful combinations [ DebuggerDisplay ( "Student: {FirstName...
  • Blog Post: Interesting Late Binding Scenario with ToString

    Not to long ago I received an email from a customer who wanted to report a bug in the VB.Net debugger.  They believed that there was a bug invoking ToString on Integer types in the immediate window and provided the following sample as evidence i = 100 ? i 100 {Integer} Integer: 100 ? i.ToString...
  • Blog Post: Why the debugging difference between C# and VB.Net return values?

    A feature which seems to be getting more requests recently is support for seeing the return value of a function in the debugger without the need to assign it into a temporary. C++’s had this feature for some time but it’s been lacking in managed debugging scenarios. James Manning recently...
  • Blog Post: Automatically loading DLL’s in the debugger

    In a recent post I discussed the apparent flakiness of extension methods and the debugger being a result of whether or not the DLL containing the extension methods were loaded into the debugee process.  Several users asked in the comment section why we didn’t fix the issue by just loading those...
  • Blog Post: Improving the display of F# seq<T>’s in the debugger

    F#’s seq<T> expressions are a frustrating item to inspect at debug time.  A seq<T> value is a collection and when users inspect such a value at debug time they want to see the contents of the collection.  Instead they are often presented with a view resembling the following The...
  • Blog Post: Extension Methods and the Debugger

    One source of confusion I find myself clearing up a lot is the use of evaluating extension methods in the debugger windows.  Users report evaluation as working sometimes but not others for the exact same piece of code.  Such flaky behavior can only be the result of a poorly implemented feature...
  • Blog Post: Newlines in the immediate window

    A question came up recently on stack overflow concerning the display of newlines in the immediate window.   The author noted that any .ToString method which contained a newline printed incorrectly when evaluated in the immediate window.  For example given the following ToString implementation...
  • Blog Post: Why is LINQ absent from debugger windows (Part 2)?

    Some readers may remember an article I published almost half a year ago about LINQ being absent from the debugger windows.  That post explored the initial design of the feature, it’s limitations and ultimately why it was absent but promised a future article on a slightly different approach. ...
  • Blog Post: Nothing is private in the debugger (part 2)

    In a previous post I discussed how accessibility is ignored when evaluating expressions in the debugger and the unexpected scenarios that it creates.  One case I neglected to mention in that article is how this behavior works with the VB late binding engine.  The expression evaluator only relaxes...
  • Blog Post: Nothing is private in the debugger

    The goal of the debugger is to provide rich inspection capabilities for a process.  The main method of inspection is through the evaluation of textual expressions which is handled by a language specific component known as the expression evaluator . This component is the data provider for a good...
  • Blog Post: Flattening class hierarchies when debugging C#

    One piece of feedback I heard in the MVP sessions this week is that debugging deep class hierarchies in C# is painful.  By default C# will only display the fields and properties declared on a given type.  To get to base class members you must expand the base node.  For large hierarchies...
  • Blog Post: Why is LINQ absent from debugger windows?

    As the owner of the VB.Net portion of the overall debugging experience, I frequently hear the request from customers to add LINQ support into the Watch / Immediate and Locals window. Virtually every other type of expression is available in the debugger windows so why leave one of the most popular ones...
  • Blog Post: Debugging F# list's

    One of the lacking's of the latest F# CTP is debugger visualization support for the built-in list types.  Viewing a list in the debugger is decidedly tedious compared to the mscorlib collection classes.  Take the following quick code sample module Main = do let l1 = [0..4] let l2 = List...
  • Blog Post: Disabling JIT optimizations while debugging

    If you've ever been debugging a managed app, only to be unable to evaluate any of the locals or parameters because the code was "optimized", check out the article below.  It shows a quick trick to disable optimizations by way of a .ini file.  This is great because it doesn't force...
  • Blog Post: Debugging PowerShell

    Debugging PowerShell can be extremely frustrating because it often turns into a session of debugging your own thought process. Often when I hit a PowerShell script issue I find myself feeling like everything is right and I'm just missing something basic. IMHO, this is because I spend the majority of...
  • Blog Post: .Net Framework Source Code

    If you haven't heard the news yet, you can read the full article on ScottGu's Blog . In summary Microsoft has released the source code for the .Net Framework in such a way that you can step into the Framework while debugging. IMHO this is great for users because it allows us to get a lot of insight into...
  • Blog Post: Customizing Displays in the Debugger for System Types

    We've heard feedback from several customers regarding the way certain types are displayed in the Debugger. Many of the displays exist to maintain the user experience between versions of Visual Studio. We constantly evaluate if this is the correct choice for a given version of the product. Starting...
  • Blog Post: DebuggerNonUserCode and Properties

    DebuggerNonUserCode is an attribute that tells the debugger that the target item is not code typed by the user. It can be added to classes, structs, methods, constructors and properties. The benefits of this attribute is that it allows the compiler and designers to distinguish user code from generated...
Page 1 of 1 (18 items)