Точки останова в ядре .NET во время выполнения? - PullRequest
3 голосов
/ 14 сентября 2008

У меня есть сторонняя библиотека, которая внутренне создает и использует класс SqlConnection. Я могу наследовать от класса, но у него куча перегрузок, и до сих пор я не смог найти правильный. Я хотел бы привязать параметр к используемой строке соединения.

Есть ли способ установить точку останова в самом ядре библиотеки .NET? В частности, в конструкторах класса SqlConnection, чтобы я мог посмотреть трассировку стека и увидеть, где она на самом деле создается?

За исключением этого, есть ли другой способ сделать это?

В частности, я хочу добавить параметр Имя приложения , чтобы наше приложение было легче идентифицировать на сервере при просмотре соединений.


Редактировать : Похоже, мне нужна дополнительная помощь. Я думаю, что я включил все, что касается поддержки сервера символов, и я заметил, что каталог, который я настроил, заполнился каталогами, которые содержат файлы .pdb. Тем не менее, я не могу получить доступ к фактическому источнику класса SqlConnection.

Есть ли какое-то определенное руководство, как это сделать успешно?

Ответы [ 6 ]

7 голосов
/ 14 сентября 2008

Вы можете загрузить исходный код .NET и установить точку останова прямо в исходном коде .NET FW.

Вы можете использовать NetMassDownloader для быстрого захвата источников .NET.

3 голосов
/ 15 сентября 2008

Хотя отладка исходного кода определенно лучше, вам не нужны pdbs или source для отладчика VS, чтобы установить bp для нужной вам функции.

Убедитесь, что вы идете в Инструменты / Параметры / Отладчик и отключите опцию под названием «Просто мой код». Поскольку инфраструктура не является «вашим кодом», отладчик бесполезно мешает вам устанавливать там точки останова.

Далее вам нужно полное имя метода, как оно отображается в метаданных. Это включает любые пространства имен, в которые он вложен. Я бы порекомендовал ILDasm или Reflector, если вам нужно найти имя.

В окне точек останова в верхнем левом углу находится кнопка меню «новый bp». Один из вариантов - установить bp для имени функции. Когда появится диалоговое окно, снимите отметку с intellisense и проверьте имя, поскольку у вас нет проекта. Надеюсь, это поможет.

3 голосов
/ 14 сентября 2008

Я почти забыл упомянуть Деблектор - это плагин Reflector, который позволяет отлаживать практически любое приложение .net без исходных кодов:)

3 голосов
/ 14 сентября 2008

Согласно этой статье вы можете скачать исходный код для .NET Framework и затем отладить его с помощью Visual Studio:

http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code

2 голосов
/ 14 сентября 2008

И если вы не можете использовать отладку на уровне источника с исходным кодом .Net Framework, поставляемым Microsoft, вы можете попробовать другой отладчик. Как mdbg или даже windbg.

редактировать

В этом подробно объясняется, как получить выпущенные части .Net framework, и как установить точки останова. NetMassDownloader выдаст вам все (pdb и source) за одну загрузку. Но не весь исходный код .Net Framework доступен. Если у вас нет SqlConnection, вы всегда можете использовать отладчики IL, подобные тем, которые я упоминал. И не забывайте, Рефлектор Лутца, чтобы вы все равно взглянули на исходный код.

0 голосов
/ 15 сентября 2008

ОК, если вы хотите получить полное руководство, вот оно:

Настройка Visual Studio для отладки исходного кода .NET Framework

Если вам нужна помощь, расскажите, какие шаги вы выполнили?

...