Интересно, могу ли я вызывать функции в режиме отладки в VC++? Предположим, что у меня есть функция, для которой я установил точку останова, когда выполнение останавливается в этой точке во время отладки, могу ли я вызывать другие функции и видеть их результаты, прежде чем переходить к следующей строке кода?
Вызов функций в режиме отладки в VC++ (немедленное окно)
comment
Я так не думаю. Отладчик помогает остановить в какой-то момент последовательный процесс выполнения, но не нарушит его.
- person Mahesh   schedule 10.12.2011
Ответы (2)
Я верю, что ты можешь. Кажется, это называется Immediate Window. Я использую VS2010 Ultimate, поэтому не знаю, существует ли он в вашей версии.
Ctrl + Alt + I
Но это только печатает вывод, когда функция возвращает значение. Кроме того, в некоторых случаях это может не сработать.
Допустим, у вас есть:
#include <iostream>
int number = 10; //global
void setNumber(int n);
int main()
{
std::cout<<std::endl; //breakpoint 1 here
setNumber(4);
std::cout<<std::endl; //breakpoint 2 here
}
int getNumberSquared()
{
return number * number;
}
void setNumber(int n)
{
number = n;
}
когда вы встретите точку останова 1, нажмите ярлык и введите:
getNumberSquared()
Вывод будет 100
После достижения точки останова 2 сделайте то же самое, и вывод будет 16
person
devjeetroy
schedule
10.12.2011
Спасибо. Я сделал это и получил эту ошибку: CXX0052: Ошибка: функция-член отсутствует. Я использую предварительно скомпилированные библиотеки без исходного кода и, следовательно, не могу вмешиваться ни в одну из их функций; однако технич. поддержка говорит, что я все еще должен иметь возможность вызывать любую из функций в библиотеке и просматривать ее вывод в режиме отладки, что-то вроде определения размера массива.
- person Jawad; 12.12.2011
ах, как я уже сказал, интерактивный режим работает не всегда. Но в основном это так. Я не смогу ничего сказать вам о его совместимости с библиотеками.
- person devjeetroy; 12.12.2011
Спасибо. Попробую другие функции, надеюсь что-то получится.
- person Jawad; 13.12.2011
В Visual Studio есть возможность перейти к определенному оператору (right click + set next statement
или ctrl+shift+F10
), но будьте осторожны при этом. Вызов функции требует, чтобы реестры были действительными, чего, скорее всего, не будет, если вы перепрыгнете через классы или выйдете за рамки.
person
Luchian Grigore
schedule
09.12.2011
@Jawad, конечно, это задумано. Среда выполнения не может знать, чего вы хотите...
- person Luchian Grigore; 12.12.2011