Посмотреть возвращаемое значение? - PullRequest
9 голосов
/ 17 января 2010

Скажите, у меня есть следующее

int num = 40 + str2Int("30");

В любом случае есть ли в Visual Studio 2008 сообщение о том, что Str2Int возвращается, не входя в функцию и не возвращаясь?

Ответы [ 6 ]

9 голосов
/ 17 января 2010

В окнах переменных "auto" будут отображаться результаты любых операций, которые вы только что совершили.

Редактировать: Удалена неопределенность относительно местоположения этого (спасибо Майклу Берру)

2 голосов
/ 17 января 2010

Поскольку возвращаемое значение обычно находится в регистре EAX, вы помещаете $eax 'variable' в окно просмотра. Когда вы перебираете вызов функции, в EAX появляется то, что возвращала эта функция.

И если вы также предоставите символ формата hr, отладчик покажет вам сообщение об ошибке HRESULT или Win32 (например, «S_OK» или «Доступ запрещен») вместо простого числа. Может быть удобно иметь каждый ($eax и $eax,hr) в отдельных записях часов.

Еще одна полезная запись - $err, которая показывает, что вернет GetLastError() (и к нему можно применить символ формата hr - или что-нибудь еще):

$eax
$eax,hr
$err
$err,hr

Обратите внимание, что более старые версии отладчика VS могут потребовать, чтобы вы использовали @ вместо $ для запуска этих переменных, но член команды отладчика заявил, что $ предпочтительнее держать в строка с набором инструментов «Средства отладки для Windows» (я думаю, что поддержка @ устарела и может быть удалена в какой-то момент).

2 голосов
/ 17 января 2010

Вы можете использовать Visual Studio Immediate Window. Это позволит вам оценить различные выражения.

0 голосов
/ 17 января 2010

Я не хотел этого с тех пор, как работал в PowerPC, и я ничего не использую в Microsoft, но вам, вероятно, нужен список регистров и представление кода сборки ... MSVC должен иметь их.

Остановитесь в инструкции после вызова функции (которая должна легко выбираться), и согласно Википедии возвращаемое значение должно быть в EAX / RAX. Скопируйте значение (или изучите синтаксис отладчика для ссылки на регистр) и приведите к соответствующему типу.

0 голосов
/ 17 января 2010

Правильный способ программирования - всегда писать небольшие фрагменты кода, чтобы проверить, как все работает. Например, если вы хотите изучить функцию str2int (в качестве примера, как вы сказали), создайте тестовый файл только для нее. Запустите его с другими параметрами, изучите, как он работает. Тогда вы окончательно убедитесь, что он работает правильно, и вам не нужно вмешиваться в него в выражениях. Как только программисты знакомятся с инструментами, они доверяют им и им не нужно постоянно проверять, как они работают.

Более того, если эта функция , которую вы реализовали , прямым следствием вышесказанного является создание файла с тестами для нее. Модульные тесты выполняют эту функцию различными способами, пока вы не сможете поверить, что она действительно работает.

0 голосов
/ 17 января 2010
cout << Str2Int("30") << endl;

Или!

cout << (num - 40) << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...