1

Есть ли способ отлаживать код на Visual C++ 2008 Express, например, я могу наблюдать за переменной для определенных значений и, когда она принимает это значение, сломаться?Условный отладчик на Visual C++ 2008 Express

Например, я хочу разбить, когда x становится 5. В gdb я бы установил точку останова, затем условие, которое x == 5. Как я могу это сделать (если возможно) на Visual C++ 2008 Express?

ответ

3

Несмотря на то что встроенная поддержка отсутствует в экспресс-изданиях, есть и другой способ.

Я нашел это на другом ответе на аналогичный вопрос.

#if DEBUG 
if(node.Name == "Book") 
    System.Diagnostics.Debugger.Break(); 
#endif 

Пример показывает, что если свойство Name совпадает с «Книгой», возникает точка останова.

Вот оригинальный вопрос:

How Do I: Create a Breakpoint Using Conditions? [C# Express]

+1

Какое ужасное обходное решение. Но приятный ответ, спасибо, Но хорошо, у меня нет подходящего инструмента, я буду использовать то, что у меня есть. –

+0

Думая снова, это не так уж ужасно, я могу найти злые способы использования этого =) –

+0

Да, это немного ласково, но, читая оригинальный ответ, он упоминает, что для этого требуется меньше ресурсов, чем фактическая условная точка останова в не-экспресс-версиях, это позор, который они вообще не включали. –

2

Это невозможно в экспресс-версиях Visual Studio. Но это возможно в полных версиях.

0

кажется, что это можно сделать даже в экспресс, по крайней мере, здесь он работал. После маркировки точки останова, я щелкнул правой кнопкой мыши на его знака, а также установить «Condition» (он не может быть проще, чем)

!Setting a condition

Тогда можно записать выражение, которое приводится к истине. Мой коллега, который только что показал это мне, сказал, что у них есть некоторые проблемы, использующие это для сравнения строк, но это довольно аккуратно для простых сравнений с использованием ints.

!Condition window

Однако, как сказано в другом ответе, это не так быстро, как вводить код прерывания непосредственно.