Что называется "Рамками" в визуальной студии? - PullRequest
2 голосов
/ 15 сентября 2010

В окне Call Stack Visual Studio сообщается:

[Frames below may be incorrect and/or missing, no symbols loaded for IPCamera.ax]   

Что означает Frames и почему пропущенные символы могут привести к неправильным данным? AFAIK, символытолько для отладочной информации, отсутствующие символы только сделают источник невидимым.

alt text

Ответы [ 2 ]

5 голосов
/ 15 сентября 2010

Frames == стек кадров.

Кадр стека - это запись, в которой хранится информация для каждого вызова функции в стеке вызовов. Он содержит все параметры, локальные переменные и потенциальные возвращаемые значения функции, которая была вызвана.

Для каждого вызова функции, который выполняется в данный момент (то есть еще не завершен), в стеке вызовов имеется дополнительный кадр.

Отсутствующие символы могут действительно привести к неправильному отображению кадров стека, в основном из-за двух явлений:

  • Функция встраивания и
  • Оптимизация Tail-Call.

В обоих случаях вызовы функций в реальном коде преобразуются во что-то другое, поэтому стековые кадры теряются (поскольку вызов не генерируется и, следовательно, нет стекового кадра).

0 голосов
/ 20 ноября 2010

Microsoft предоставляет файлы символов для большинства, если не для всех своих библиотек ОС. Если вы сконфигурируете Visual Studio для их загрузки, вы сможете избежать проблемы с отсутствующим кадром стека при отображении стека вызовов. Смотрите эту статью для получения дополнительной информации: http://blogs.msdn.com/b/heaths/archive/2005/04/27/412764.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...