Mike Stall's .NET Debugging Blog
learn.microsoft.com/en-us/archive/blogs/jmstall
Notes on Managed Debugging, ICorDebug, and random .NET stuff
C# / .NETDev tools / editors / IDEsMicrosoft blogsMSDN archive
- Posts
- 426 from 30 Sep 2004 to 19 Jun 2014
- Posting
- archived, read-only
- Kind
- personal blog
- Feed
- https://learn.microsoft.com/en-us/archive/blogs/jmstall/feed.xml
2014 9
- Webjobs SDK Beta is released
- Azure Storage Naming Rules
- Hosting interactive code in the Cloud
- How does [BlobInput] work?
- Azure Storage Bindings Part 3 – Tables
- Who wrote that blob?
- Azure Storage Bindings Part 2 – Queues
- Azure Storage Bindings Part 1 – Blobs
- Trigger, Bindings, and Route parameters in AzureJobs
2013 3
2012 10
- Reflection vs. Metadata
- Converting between Azure Tables and CSV
- Strong binding for CSV reader
- Per-controller configuration in WebAPI
- Excel on Azure
- How to create a custom value provider in WebAPI
- How to bind to custom objects in action signatures in MVC/WebAPI
- MVC Style parameter binding for WebAPI
- How WebAPI does Parameter Binding
- ASP.Net WebAPI
2011 2
2010 1
2009 5
2008 23
- Managed Dump debugging support for Visual Studio and ICorDebug
- Updated MSDN forums
- Stuff in Reflection that's not in Metadata
- Nice MSDN URLs
- The price of complexity
- Codegen for On Error Resume Next
- The waiting game
- Understand the end-to-end scenarios
- Arguing by-example vs. by-principle
- Things in Metadata that are missing in Reflection
- Binary vs. Source compatibility
- Do you compile XML to IL?
- Why are you caching data?
- Why threading is hard
- Quiz: can you count how many combinations ...
- Lang.Net 2008 is coming
- Battle Simulation: size vs. smarts (part 3)
- Battle Simulations with Iron Python (part 2)
- Partial Classes and future-proof vindication
- An extra 1 gig of memory works wonders...
- Zune's killer feature
- "Managed Humans" by Michael Lopp
- RTS Battle simulation with IronPython
2007 87
- Interview tip: what's the real question
- It never works
- Merry Christmas!
- Grocery stores and cyclical dependency graphs
- Return vs. Finally (2)
- Real Time Strategy game for Silverlight
- Debuggability tops MSBuild feature poll
- Stateless card dealing
- "This statement is false"
- Learning Python
- Don't expect customers to always run your app under a debugger
- Why is System.Diagnostic.Debugger class compiled in retail?
- How to add Options to Live Writer PlugIns
- WiX Script for installing Live Writer Plugins
- Simple Tool for text substitution plus Design questions
- Breaking changes in ICorDebug from 1.1 to 2.0.
- Paste-From-Console Live Writer PlugIn
- Transitioning off the CLR
- Trivia about the [Conditional] attribute
- Quiz: What runs before Main()?
- My daughter, the QA tester
- How to tell if a function is managed code?
- The debugger is not just an extension to BCL + Reflection
- 3 years!
- Why debugging breaks in optimized (production) builds.
- Debugger.Break()
- ICorDebugFunction is 1:1 with the IL
- "Drawn to Life" and framework design
- What I'm reading now: 50 Rules Kids Won't Learn in School
- (A==B)==(X==Y)
- Paradigms around Debugging Memory leaks
- Foreach codegen
- Feature Parity vs. Scenario Parity
- ICorPublish does not cross the 32/64 bit boundary
- What I'm reading now: Showstoppers
- Indirection is funny
- My first LiveWriter PlugIn is posted to the gallery
- Unit tests for a simple OnMoved event handler
- Updating my sample for the Silverlight Refresh
- Updating Visual Studio for the Silverlight 1.1 Refresh
- Why is there a separate 'debug pack' for Silverlight?
- Setting transparency in an image
- Making "Required properties" less annoying
- My first (non-trivial) Windows Live Writer Plugin
- 68+ "Visual Studio 2008 beta 2 is released" blog entries in 24 hours.
- Safety by Accident
- A 30x speed improvement
- JScript vs. Nintendo DS
- Debugger and Versioning link fest
- What can I use to debug VC2002 Managed C++ apps?
- Which is worse?
- Optimize for Simplicity
- Test what you Ship, Debug what you Test
- Answer to Number puzzle
- Number puzzle
- Out of office
- Silverlight and CLR enumeration
- Techniques for Debugging IL
- Debugger talk at Compiler Lab
- My first Silverlight 1.1 app
- Non-deterministic Searching blogs
- Silverlight 1.1 Alpha
- Debugger and Versioning
- Sometimes it's better to just not think about it
- Myers-Briggs
- Finally, a computer I can beat at chess
- TypeDef vs. TypeRef
- Describing Types in .NET
- Func-eval abort is evil
- Using Windows live Writer
- "Why are you picking off the olives?"
- Building and Debugging Powershell cmdlets in the VS IDE
- Some tips for P/invoke
- Ratio between Managed and Native Modules
- 'throw e;' vs. 'throw;'
- Making Catch, Rethrow more debuggable.
- Catch, Rethrow, and Debuggability
- Sample code for copying Html to Clipboard
- Copying HTML on the clipboard
- Image Header vs. File Timestamps.
- UpdateModuleSysmbols comes on attach
- Tips for writing an Interop Debugger
- #ifdef usage in Rotor
- Does C# intellisense read you mind?
- You don't want to write an interop debugger.
- I've been tagged.
- Type-safe Managed wrappers for kernel32!GetProcAddress
2006 126
- Fake attach event ordering
- C# app to count #ifdef usage
- Embed Macros in Help?
- Measuring language complexity: Do you need a debugger?
- Your feedback: How many types do you ref.emit into a module?
- Interview Tip: Writing test cases
- What I'm reading now: "C++ Template Metaprogramming"
- Patrick Dussud is blogging!
- Random comments about Sytem.Convert class
- Table of Cool .NET Tools
- Marshal opaque structs as IntPtr instead of Byte[]
- Creative usage
- AppDomain.ProcessExit is not guaranteed to be called
- Mdbg (C# debugger in C#) source sample updated
- Thoughts on Vista from a non-computer person
- Viewing types with Reflection-Only
- Hit 300 mark
- LCG + Debuggability, and your feedback
- Rename Mdbg forum to "Building Development and Diagnostic Tools for .Net"
- Binary Patching tools (mspatcha, mspatchc)
- The Tester's dilemma: proving you can count to a million
- Unit testing databases
- Writing an RTF to HTML converter, posting code in blogs.
- Using Foo<T>(...) instead of Foo(System.Type, ...)
- GCHandle.ToIntPtr vs. GCHandle.AddrOfPinnedObject
- Pop quiz: Who wins in finally vs. return?:
- Debugging Ngen code
- ICorDebugValue vs. System.Object
- Using CreateRemoteThread from C#
- Sample code for CreateRemoteThread in C#.
- How to start a console app in a new window, the parent's window, or no window
- What I learned this morning...
- My baby, the finite state machine.
- LoadClass events are usually meaningless
- Iron Python 1.0 is released
- How can you force clients to use your APIs properly?
- An example of an API versioning problem.
- Fixing the MDbg / Iron Python extension...
- Asking questions on the forums
- Cool tool: NDepend
- Empty implementation of ICorDebugManagedCallback
- Lessons from political bloggers
- Upcoming compiler lab
- MDbg / ICorDebug forum is now available!
- Caveats about managed JIT-debugging
- Resolving functions and func-eval syntax
- You can't cast from a pointer to a managed object in the debugger
- Coffee and the L2 Cache
- #line hidden vs. DebuggerNonUserCode attribute
- Experiences with FxCop and wrapping the native debug API
- Conventions for passing the arguments to a process
- Working on managed wrappers for Native Debugging API
- Managed vs. Native debugging APIs
- Debugger.Log vs. OutputDebugString
- Debugger won't properly evaluate C#s base keyword
- How to build Mdbg apps
- Rant: Xml is Code
- Random ICorDebug trivia about debugging AppDomains
- Source posted for snapshot tool
- Sample code for snapshot tool
- Thomas Lai is now blogging!
- Saved by the blog
- Random thoughts on Bill G transition plans
- MSDN Wiki
- Managed Stack Explorer
- Enc APIs aren't exposed through reflection
- Using a Profiler for inspection
- Felice Pollano: Integrating a debugger into Reflector
- Is "Module Breakpoint" ambiguous?
- Practical MDAs in MSDN magazine
- Some practice interview questions
- How did I ever live without it?
- Getting answers to questions
- Dbg vs. Pdb files
- Stop the debuggee to poke at it
- The stop count and trivia
- Trivia about Set-next-Statement (SetIp)
- What to expect when you Attach, Async-Break
- "Correct" may depend on your point of view
- Looking forward to the day when free wireless is just a given
- Competing with the docs:
- Put a config file on your debuggers
- Why doesn't MDbg use generics?
- What I'm reading now (Practical .NET2 and C#2)
- The JIT does dead-code elimination in Debuggable code
- Being a CLR dev does not mean you know everything about the CLR
- Passing env vars to the debuggee
- Chatting about debugging?
- Is this a good or bad?
- New CLR blogger: Vance Morrison
- Doing Detach with ICorDebug
- Jan is on MSDN TV talking about MDbg
- MDbg, Managed-debugging, and 64 bit
- "You can't have too much chocolate"
- What does a debugger author need to do to support func-eval?
- Why don't the managed Debugging APIs expose the Finalizer thread?
- Feedback on debugging optimized (managed) code?
- Why can't you detach in interop-debugging?
- The cost of context switching
- Modules vs. Assemblies from the managed debugger's perspective
- IFEO and Managed-debugging
- Sample Mdbg extension
- Living with the consequences.
- TV Reruns (past the 200 mark)
- ICorDebug failure codes
- About CORDBG_E_OBJECT_NEUTERED
- Design Implications from boring details
- Impossible vs. Insufficiently Clever
- Viewing the current Exception in the debuggeer
- Random ICorDebugThread trivia
- Fun with yield, generics, and foreach
- MDbg UI Threading, round 2
- You can't do Edit-and-Continue with Interop-debugging on.
- When More is less
- Mdbg IronPython Extension updated for Beta 1
- Multiple steppers on 1 thread and other trivia
- Oh, yeah!
- Sudoku Solver and Omniscient debugging
- XML Diff Tool
- Click Once rocks.
- You need Source Files to do source-level debugging
- Trivial RSS Writer
- Writing colorized text to RichTextBox
- Debugabbility with Roundtripping Assemblies
- Partition of ICorDebug
- Happy New Year!
2005 139
- Do you want to work on the CLR?
- Merry Christmas!
- A SymWriter sample is coming...
- Check out CLR Profiler 2.0
- Source Control for 1
- Don't rewrite opcodes in managed code.
- Using MC++ to wrap ICorDebug for .NET 1.1
- Christmas blog decorations!
- Evil trick to render UI when stopped at a breakpoint.
- "Visual Studio 2003 Mixed Mode Debugging Crash"
- MDbg sample is updated for VS2005 RTM
- VS 2003 can not debug .NET 2.0 apps.
- Tool to get snapshot of managed callstacks
- Blog Category for Func-eval
- Poor Man's Radio
- Use streams to simplify Stitching problems
- What I'm reading now...
- Only 1 checkin in 4 months?
- Updated MDbg GUI
- Rules of Funceval
- Presentation on AOP + Debuggability
- Why you sometimes get a bogus ContextSwitchDeadLock MDA under the debugger
- Managed Debug Assistants (MDAs) are cool.
- AOP and Debuggability
- MDbg Linkfest
- Summary of the role of MDbg and Cordbg
- New toys
- Our policy on policy
- Using Funceval to Inject code into another app
- BCL's Stacktrace doesn't capture locals.
- You can't debug yourself
- MDbg extension to debug IL
- Small changes can prevent optimizations.
- VS2005 ships!
- Do printer manufacturers do any scenario testing?
- Update to Iron Python MDbg sample.
- Informal poll on debugger feature requests?
- Big picture on Symbol APIs
- .Net / ASP.Net Developers: check out Tim's blog
- Native threads still run at a managed breakpoint.
- Debugging support for ASP.Net
- Viewing Exception Message string
- Remote Debugging vs. Remote UI
- It's been a year
- I'm caught up!
- Symbol API (CorSym.idl) for managed PDBs
- Enable vs. Implement
- Debugger.Log and LogMessage
- Compiling a language to C#
- Having debugger-friendly codegen
- MDbg Sample temporarily broken in post-beta 2 builds.
- F5 vs. Ctrl-F5
- Process X can't tell if Process Y is being managed debugged.
- Going from IL to Source
- ICorDebug reentrancy
- Types of Names
- Out-of-band events and Mixed-mode debugging
- IL offset 0 vs. Native offset 0
- MC++ / IJW codegen for Native structures in IL
- Managed C++ codegen for new, array manipulation, delete
- How can I tell if I'm interop-debugging?
- How to embed IronPython script support in your existing app in 10 easy steps
- Adding IronPython scripting engine to Mdbg
- Sample Python script for Mdbg-Python extension
- Sample code for MDbg-IronPython extension
- The importance of fortifying your subsystems.
- What's on my blog-todo list.
- Sample code for PDB 2 XML tool
- ICorDebugStepper and using ICorDebugStepper2::SetJMC
- Size of Visual Studio
- Sample code for Plagiarism Searcher tool
- Using the clipboard as input for console tools.
- Sample code to execute MSN searches from C#
- Tool to catch plagiarism
- Why <font> is bad and easy intro for Cascading Style Sheets
- Auto-attach to child process is not supported in managed-debugging
- How should a generic method be displayed?
- Nesting C#'s yield
- MDbg Sample is updated for Beta 2 and RTM
- You can't get a mixed-mode callstack from inprocess.
- Harness that Attach instead of Launch
- TextReader based off C# Yield
- On why C#'s "abstract-override" is so cool:
- Jonathan Keljo has started a blog!
- More caveats about #line
- What my dog taught me about race conditions
- Simple example of an API design flaw.
- Correction: you can't reasonably instantiate your own ICorDebug
- Simple harness to print exceptions in an app
- Using ICorDebugProcess::HasQueuedCallbacks
- Debug support for arbitrary state-machines
- Source-level step-in is not well defined.
- My wish: CLR as gaming scripting engine for Civilization
- Problem with .maxstack in IL-roundtripping tools
- A common problem: forgetting to call ICorDebugAppDomain::Attach
- It's been a while
- How to do a source-level step (eg, F10)
- Interop-stepping is 400 times faster in Whidbey over Everett
- #line hidden and 0xFeeFee sequence points
- MSDN feedback rocks.
- ICorDebug is coming to MSDN…
- Updating MDbg GUI for Beta 2
- Mdbgcore.dll and linking IL
- How _not_ to organize your mail
- Please send Watson Error Reports when an app crashes!
- Roger Wolff on Implementing ICorDebug for TinyCLR
- Quiz: What's wrong with this code?
- MDbg and Beta 2
- A step backwards
- Feedback on the ICorDebug API?
- MS Blog Sites have upgraded to Community Server
- C# and Equals() in V2.0 versus V1.0.
- Caveats about System.Diagnostics.StackTrace
- Why you can’t debug mscorwks when interop-debugging
- Clearly Document Object Lifespans
- Quiz about Object.Equals()
- Answers to C# Equality quiz
- Quiz about C# and object equality.
- Managed Debugging doesn’t support Fibers
- Don’t do “complicated” work in Release().
- Debugging any .Net language
- Tool to allow inline IL in C# / VB.Net
- 3rd-parties and Edit And Continue (Part 2: Debuggers)
- 3rd-parties and Edit-and-Continue (Part 1: Editors + Compilers)
- Rick Byers has started a blog!
- Easily passing Managed strings to Unmanaged code (round 2)
- Hardmode vs. Softmode
- Compiler Lab Results
- Source for a C# compiler written in pure C#.
- Source is available for MDbg Winforms GUI!
- Why you can’t do Edit-and-Continue on Dynamically generated code
- Debugging Dynamically Generated Code (Reflection.Emit)
- Implementing ICorDebug to reuse existing debuggers?
- What is Interop-Debugging?
- Finding where unmanaged exceptions came from
- How to get a V2.0 ICorDebug object
- Code Gen flags while Debugging
- Object Identity in Managed Debugging
- What's new in v2.0 CLR Debugging (ICorDebug)?
2004 21
- How can I debug Just My Code?
- How do Managed Breakpoints work?
- You can’t attach 2 debuggers to 1 process
- Enumerating Managed Processes
- Sample app to print loaded modules.
- Winforms gui on top of Managed debugger sample.
- Problems for a managed debugger for v1.1?
- Using metadata interfaces from managed code
- David Notario, JIT guru, is blogging
- CLR Debugging vs. CLR Profiling
- Standardizing ICorDebug?
- ICorDebug, Edit-and-Continue, and C#
- Why is managed debugging different than native-debugging?
- We need your feedback on the fate of Cordbg.exe
- How can I use ICorDebug?
- Debugging IL
- "Rocket Science" API?
- Debuggers aren't supposed to change behavior
- Getting your feedback!
- Managed Debugger Sample
- Introductions, ICorDebug + CLR Debugging Services