How to step into Framework source code in MonoDevelop

大兔子大兔子 提交于 2019-12-01 16:24:15

This is an old post, but I stumbled upon it looking for the answer today, so hopefully it will help someone else out. Just unchecking the "Do not step into framework code" doesn't work unless you have the source in the location the PDB/MDB files point to. On my box, it was looking for the source at "/usr/src/packages/BUILD/mono-2.10".

In order to find out specifically where it should go for you, generate and log out an exception that contains a stack trace involving the framework (new SqlConnection(null) for example) and it will show you the file location its looking for the source in. For example:

  at System.Net.Sockets.NetworkStream.Read (System.Byte[] buffer, Int32 offset, Int32 size) [0x00065] in /usr/src/packages/BUILD/mono-2.10/mcs/class/System/System.Net.Sockets/NetworkStream.cs:369 
  at Mono.Data.Tds.Protocol.TdsComm.Read (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in /usr/src/packages/BUILD/mono-2.10/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs:630 
  --- End of inner exception stack trace ---
Ben Last

A key part of the answer if you're just setting up a Mono environment is where to install the source files. For the standard Mono build on Ubuntu Natty, this is /build/buildd. So to get the source of mono 2.6.7 (the Ubuntu build), do:

sudo mkdir /build
cd /build
sudo mkdir buildd
cd buildd
sudo apt-get source mono
sudo apt-get install mono-dbg

Then ensure you have "Do not step into framework code" unchecked in monodevelop and it should be able to find the sources.

Firstly, your Mono class libraries must have debug symbols pointing to the framework source files. Then you should uncheck the "Do not step into framework code" option in MD debugger options.

Dmitry Fedorkov

I don't have the apt-get source option in Arch Linux, so I did this as root:

# git clone https://github.com/mono/mono.git /opt/mono-src
# mkdir -p /build/mono/src
# ln -s /opt/mono-src /build/mono/src/mono-4.6.1

Instead of these /build paths use your own accordingly to Greg's answer.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!