How can I step into Microsoft's .NET framework source code?
Asked Answered
L

3

9

I'd like to step into Microsoft's source code but cannot.

I followed the instructions at Configuring Visual Studio for Debugging. In particular, I disabled "Enable Just My Code" and Enabled "Enabled .NET Framework source stepping". Finally, set the source symbol location to "http://referencesource.microsoft.com/symbols".

However, when I double click on a frame item on the stack, I get some assembler code, not C# code. Also the "go to source code" menu item is disabled.

I am using Visual Studio 2008 SP1 and .NET 3.5 SP1. I created a brand new folder for the downloaded stuff. I get some pdb files but no C# file.

I looked at Configuring Visual Studio to Debug .NET Framework Source Code and installed the path. It makes no difference. I am trying to the source code of WPF. The pdb are downloaded so it looks like Microsoft supports those.

Is there a trick to fix this?

Licastro answered 27/7, 2009 at 1:35 Comment(2)
This has been asked a couple of times: perhaps one of these answers will help - #374296 - #562224Federalism
Possible duplicate of How to debug through .NET Framework source code?Saphead
J
3

As far as I have observed .NET framework stepping with the reference source works just fine with the guides you find everywhere. With VS SP1 you don't even have to add the path to the reference source server.

But the problem are mismatched versions. The framework assemblies were updated with .NET 3.5 SP1, Vista SP2, Windows 7, ... but their reference source PDBs weren't made available. The corresponding reference source forum seems quite dead, too. I remember reading that it took them a bit longer to push out the initial symbols because they built an infrastructure that would allow them to push new versions quickly. Either that didn't really happen or they don't use it.

Jinny answered 27/7, 2009 at 2:28 Comment(1)
I am using .NET 3.5 SP1. Are you saying I can't use framework code debugging?Licastro
O
2

Not all parts of the .NET framework is available as reference source, but the parts that are (and steps for getting it up and running) is described in Shawn Burke's blog, Configuring Visual Studio to Debug .NET Framework Source Code.

Update: Hmm. It is broken on my machine too although it used to work. Weird.

Obeng answered 27/7, 2009 at 1:47 Comment(2)
Thanks for your answer Since I can download the pdb, I assume Microsoft supports this part of the framework (WPF). I looked at the link, installed the patch - no difference.Licastro
Hmm, you're right. It used to work on my machine but I haven't used it for a while. When I tried today, I can't get it to work. It downloads the PDBs alright, but gives a "source code not available" error whenever I try to step into framework code... Odd. I guess gix's answer is the explanation - mismatching versions and outdated symbols on the reference source server...Obeng
M
0

I applied these steps for VisualStudio 2022

  • Enable Microsoft Symbol Servers: To allow Visual Studio to automatically download the symbols from Microsoft's servers. (See Fig-1) Tools > Options > Debugging > Symbols. Check the box next to
    "Microsoft Symbol Servers" to enable it
  • Enable Source Link Support (Visual Studio 2017 and later): This feature allows you to download and step into the source code from repositories that support Source Link. (See Fig-2) Tools > Options > Debugging > General > Check the box next to "Enable Source Link Support" to enable it
  • Disable Just My Code: This option allows the debugger to step into code that's not part of your project, including .NET Framework code. (See Fig-2) Tools > Options > Debugging > General > uncheck the box next to "Enable Just My Code" to disable it.
  • Enable source server support: This option allows the debugger to retrieve source code files (like the .NET Framework for which you may not have the source code locally) from Microsoft Reference Source servers during debugging. (See Fig-2) Tools > Options > Debugging > General > Check the box next to Enable source server support to enable it.

To Start Debugging

Since symbols and source files are downloaded from Microsoft's servers you need an active internet connection. Now Set a breakpoint in your .net code where you wish to start debugging. As soon as you run the application in Debug mode for the first time after completing the above steps Visual Studio might take a moment to download the necessary symbols and source files from the Microsoft servers (See Fig-3). Subsequent debugging sessions should be faster.

When breakpoint hits at code that's part of the .NET Framework and you choose to step into. If the .net code is a property or operator (e.g.: ?) then you are prompted a dialogue box saying “Your step-into request resulted in an automatic step-over of a property or operator.”. So Visual Studio will not step into that code. If you still want to step into Property or operator then

  • you have to uncheck the option of “Step over properties and operators (Managed only)” to disable it as shown in Fig-2 or
  • You can choose to step into specific using the Context menu of the line being executed where the breakpoint hit as shown in Fig-4.

enter image description here

enter image description here

enter image description here

enter image description here

Milli answered 11/3, 2024 at 11:46 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.