Как стать автором
Обновить

Комментарии 3

А зачем перебирать все фреймы? Если мы хотим адрес на локальную переменную, то и смотреть нужно только в активный фрейм, нет? Как минимум, это наверняка сократит поиск в наиболее частом случае. Вот если не нашли в текущем, можно попробовать и остальные посмотреть, хотя пока непонятно, зачем

Контр-пример на идею смотреть только на активный фрейм потока:

int foo(int n) {
  int x;
  if (n) {
   foo(n - 1); 
  }
}

Рассмотрим момент foo(0), спросим про указатель на x (которая все еще жива) в момент вызова foo(n) — в текущем фрейме foo(0) мы ее не найдем.

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

*Сделав глоток чая, запустил отладчик Visual Studio*

Зарегистрируйтесь на Хабре, чтобы оставить комментарий