Точки останова в основной среде выполнения .NET?
-
09-06-2019 - |
Вопрос
У меня есть сторонняя библиотека, которая внутренне создает и использует класс SqlConnection.Я могу наследовать от класса, но у него масса перегрузок, и до сих пор я не смог найти нужный.Что бы я хотел, так это привязать параметр к используемой строке подключения.
Есть ли у меня способ установить точку останова в самом ядре библиотеки .NET?В частности, в конструкторах класса SqlConnection, чтобы я мог посмотреть на трассировку стека и увидеть, где она на самом деле создается?
Кроме этого, есть ли какой-нибудь другой способ, которым я могу это сделать?
В частности, то, что я хочу сделать, это закрепить на Название приложения параметр, позволяющий легче идентифицировать наше приложение на сервере при просмотре подключений.
Редактировать:Что ж, похоже, мне нужна дополнительная помощь.Я думаю, что я включил все, что связано с поддержкой symbol server, и я заметил, что каталог, который я настроил, заполнился каталогами, содержащими файлы .pdb.Тем не менее, я не могу сделать доступным фактический исходный код класса SqlConnection.
Есть ли какое-то определенное руководство о том, как это успешно сделать?
Решение
И если вы не можете использовать отладку на уровне исходного кода с помощью .Исходного кода Net Framework, предоставленного Microsoft, вы можете попробовать другой отладчик.Как mdbg или даже windbg.
Редактировать
Это очень подробно объясняет получение выпущенных частей .Net Framework и как устанавливать точки останова.NetMassDownloader предоставит вам все (pdb и исходный код) за одну загрузку.Но доступен не весь исходный код .Net framework.Если вашего SqlConnection нет, вы всегда можете использовать IL-отладчики, подобные тем, о которых я упоминал.И не забудьте про Рефлектор Лутца, который в любом случае даст вам возможность взглянуть на исходный код.
Другие советы
Ты можешь загрузить исходный код .NET и установите точку останова прямо в исходном коде .NET FW.
Вы можете использовать NetMassDownloader - Сетевой загрузчик чтобы быстро получить доступ к исходным кодам .NET.
Согласно этой статье, вы можете загрузить исходный код для .NET Framework, а затем отладить его с помощью Visual Studio:
http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code
Я чуть не забыл упомянуть Дефлектор - это плагин Reflector, который позволяет вам отлаживать практически любое .net-приложение без исходных кодов :)
Хотя отладка с исходным кодом определенно лучше, вам не нужны файлы PDF или исходный код для VS debugger, чтобы установить bp для нужной вам функции.
Убедитесь, что вы зашли в Tools / Options / Debugger и отключили опцию под названием "Только мой код".Поскольку фреймворк не является "вашим кодом", отладчик бесполезно запрещает вам устанавливать там точки останова.
Далее вам понадобится полное название метода в том виде, в каком оно указано в метаданных.Это включает в себя любые пространства имен, в которые оно вложено.Я бы порекомендовал ILDasm или Reflector, если вам нужно найти название.
В окне точек останова в левом верхнем углу находится кнопка меню "создать bp".Один из вариантов - установить bp для имени функции.Когда появится диалоговое окно, снимите флажок с проверки intellisense имени, поскольку у вас нет проекта.Я надеюсь, что это поможет.
Хорошо, если вам нужно окончательное руководство, вот оно:
Настройка Visual Studio для отладки.Исходный код NET Framework
Если вам нужна помощь, продолжайте и расскажите use, какие шаги вы выполнили?