Patrick Skelton Ответов: 2

В Visual Studio в 2019, как мне установить условную точку останова, которая вызывает математика.АБС()?


Название вопроса в значительной степени говорит само за себя: в Visual Studio 2019 как установить условную точку останова, которая вызывает Math.Abs()?

Напр.. Math.Abs( x ) > 0

Что я уже пробовал:

Я пробовал ставить префикс вызова, например так: System.Math.Abs( x ) > 0

Я также пытался найти ответ, но ничего не нашел. Как ни странно, я смог найти, как вызвать C++ stdlib функция (например strcmp) но ничего для C#.

2 Ответов

Рейтинг:
16

OriginalGriff

Помогает ли это: Использование точек останова в отладчике - Visual Studio | Microsoft Docs[^] - в нем есть раздел об условных точках останова.

Я попробовал это с помощью BP на консольной линии:

for (int i = 0; i < 100; i++)
    {
    Console.WriteLine(i);
    }
Я установил BP, затем щелкнул правой кнопкой мыши и выбрал "условия..."
Оставив "условное выражение", и "правда", в поле "выражение" я набрал "математика.АБС(я) == 5" и "закрыто".
Точка останова срабатывает только на шестой итерации.


Patrick Skelton

МММ... это странно. Теперь он действительно прекрасно работает. Наверное, у меня была синтаксическая ошибка или что-то в этом роде. Я оставлю этот вопрос, потому что он может дать хороший быстрый ответ для любого другого, кто может прийти. Спасибо.

OriginalGriff

Всегда пожалуйста!

Мне это тоже не удалось в первый раз - я использовал английское написание "Maths" вместо американского "Math" :blush:

Рейтинг:
0

Member 14885087

Вы не можете отлаживать предопределенные методы.Другие способы увидеть выходные значения-это использовать quickwatch или назначить переменной и проверить условие.


OriginalGriff

Хм... - вы уверены? Условные точки останова с использованием "внутренних функций" прекрасно работают для меня ...

OriginalGriff

Да, и на всякий случай, если вы неправильно поняли исходный вопрос - вы можете довольно легко отлаживать "предопределенные методы", включая фреймворк-библиотеку (и это может быть очень удобно):
https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-debug-dotnet-framework-source?view=vs-2019

Member 14885087

Я уже пробовал это и работает на меня
int testInit = 1;
for (int i = 0; i < 100; i++)
{
if(Math.Abs(i)> 3)
{
Приставка.WriteLine("Тест");
}
Приставка.WriteLine(i);
}
Я поставил условную точку останова для Math.Abs(i)> 3 с условным выражением 'i==5', и bp сработал для меня