BoundsChecker и фантастика в дебаггере
От: Аноним  
Дата: 07.11.09 13:57
Оценка:
Всем привет,

Взгляните, пожалуйста, на скриншот дебаггера.



Точка исполнения находится внутри виртуальной функции. mDb — ссылка на обьект-член класса. У mDb тип CDbBackend&. Поток только один. Значения в красных прямоугольниках должны быть одинаковыми. Но они разные! Как такое может быть?

Отлаживаемый код был проинструментирован BoundsChecker. Разница в адресах позже проявляется как крах программы, потому что адрес, содержащийся в "b", указывает хоть и в адресное пространство процесса, но никакого обьекта CDbBackend там нет. Неинструментированный код ведёт себя как положено.

Ассемблер, сгенерированный для выражения b = &mDb, и его прохождение с регистрами -- здесь, это видеофайл размером 500k, записанный с экрана.

Спасибо за любую идею.
Re: BoundsChecker и фантастика в дебаггере
От: blackhearted Украина  
Дата: 10.11.09 09:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет,

...
А>Спасибо за любую идею.

Так ,а что не устраивает?Работает и ок.
Если есть свободное время — поищите глюки дебагера
Тем более версия студии осталась за кадром.
Re: BoundsChecker и фантастика в дебаггере
От: Pavel Dvorkin Россия  
Дата: 10.11.09 11:59
Оценка: 1 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Всем привет,


А>Спасибо за любую идею.


Release ? Если да — не верьте ничему. Только вывод в лог дает правильные значения.
With best regards
Pavel Dvorkin
Re[2]: BoundsChecker и фантастика в дебаггере
От: blackhearted Украина  
Дата: 10.11.09 17:01
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:


PD>Release ? Если да — не верьте ничему. Только вывод в лог дает правильные значения.


Хотя сложно уловить логику дебажить релиз
Re[3]: BoundsChecker и фантастика в дебаггере
От: Pavel Dvorkin Россия  
Дата: 11.11.09 06:29
Оценка:
Здравствуйте, blackhearted, Вы писали:

PD>>Release ? Если да — не верьте ничему. Только вывод в лог дает правильные значения.


B>Хотя сложно уловить логику дебажить релиз


Тебе не доводилось сталкиваться с ситуацией, когда Debug работает, а Release — нет ? Если не доводилось — ты счастливый человек
With best regards
Pavel Dvorkin
Re[2]: BoundsChecker и фантастика в дебаггере
От: yaroslavp  
Дата: 13.11.09 15:40
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Так ,а что не устраивает?Работает и ок.


Не работает. Инструментированный код при исполнении аварийно завершается из-за явлений, которые я описал.

B>Если есть свободное время — поищите глюки дебагера

B>Тем более версия студии осталась за кадром.

2008 Express Edition.
Re[2]: BoundsChecker и фантастика в дебаггере
От: yaroslavp  
Дата: 13.11.09 15:42
Оценка:
PD>Release ? Если да — не верьте ничему. Только вывод в лог дает правильные значения.

Крах системы наступает именно из-за доступу к этому странному указателю. Здесь уж трудно не поверить
Re: BoundsChecker и фантастика в дебаггере
От: Aleх  
Дата: 15.11.09 01:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет,


А>Взгляните, пожалуйста, на скриншот дебаггера.


А>


А>Точка исполнения находится внутри виртуальной функции. mDb — ссылка на обьект-член класса. У mDb тип CDbBackend&. Поток только один. Значения в красных прямоугольниках должны быть одинаковыми. Но они разные! Как такое может быть?


А>Отлаживаемый код был проинструментирован BoundsChecker. Разница в адресах позже проявляется как крах программы, потому что адрес, содержащийся в "b", указывает хоть и в адресное пространство процесса, но никакого обьекта CDbBackend там нет. Неинструментированный код ведёт себя как положено.


А>Ассемблер, сгенерированный для выражения b = &mDb, и его прохождение с регистрами -- здесь, это видеофайл размером 500k, записанный с экрана.


А>Спасибо за любую идею.


Если без BoundChecker'а всё работает, нафиг его!
А вообще из видео я не смог понять причину проблемы. Чтобы сказать, где ошибка, нужно знать где изначально расположена переменная mDb. Из смещений на стеке это не понятно. В общем нужно пройтись в отладчике и посмотреть, в какой момент нужное значение "портится".
Re[3]: BoundsChecker и фантастика в дебаггере
От: blackhearted Украина  
Дата: 24.11.09 16:05
Оценка:
Здравствуйте, yaroslavp, Вы писали:

Y>Здравствуйте, blackhearted, Вы писали:


B>>Так ,а что не устраивает?Работает и ок.


Y>Не работает. Инструментированный код при исполнении аварийно завершается из-за явлений, которые я описал.


Ну значит ищите ,где расстреливается память.
Re: BoundsChecker и фантастика в дебаггере
От: Аноним  
Дата: 30.11.09 11:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет,


А что, адрес ссылки на объект (&mDB) должен быть равен адресу объекта? (p)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.