Войти
ПрограммированиеФорумОбщее

C++. Что это? Баг visual studio? (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
11:25, 5 сен. 2017

До вызова AddUnit 
int DEL_ME = _Map->QuadsOnScreenX ;
if (DEL_ME == 86)
{
  std::cout << DEL_ME;
}

выполняется std::cout << DEL_ME;

сразу после вызова AddUnit 
int DEL_ME = _Map->QuadsOnScreenX ;
if (DEL_ME == 86)
{
  std::cout << DEL_ME;
}

std::cout << DEL_ME; уже не выполняется.


#16
11:26, 5 сен. 2017

Kartonagnick
> кто то опять пытается отлаживать релиз?
дебаг стоит.

#17
12:45, 5 сен. 2017

Если нигде больше переменная не юзается, то она может быть удалена ранее и там может быть мусор.

#18
12:55, 5 сен. 2017

amd.fx6100
> До вызова AddUnit 
> выполняется std::cout << DEL_ME;

> сразу после вызова AddUnit
> std::cout << DEL_ME; уже не выполняется.

Ну дык и смотри что внутри AddUnit портит _Map->QuadsOnScreenX.

#19
13:25, 5 сен. 2017

скорее всего где-то вышел за границы массива и память испортил. завтра попробую убирать код. закомментировав его и смотреть когда баг пропадет. Кода много. Долго придется искать.

#20
13:54, 5 сен. 2017

StepEver
> Поставь. Брекпоинт. На изменение данных.
> Находится всё сразу за наносекунды :)
память то не меняется от вызова AddUnit. После вызова этой функции оно как бы поменялось но вроди и не поменялось. Как на такое прейкпоинт поставить не понятно.

#21
13:59, 5 сен. 2017

я открыл память от переменной  _Map->QuadsOnScreenX  память после вызова AddUnit не изменилась но в функции AddUnit  _Map->QuadsOnScreenX уже не равняется 86  хотя в памяти там по прежнему 86. видимо оно не с того места откуда надо берет _Map->QuadsOnScreenX.  Память не меняется а проверка if(_Map->QuadsOnScreenX == 86) не срабатывает

#22
14:01, 5 сен. 2017

amd.fx6100
> я открыл память от переменной  _Map->QuadsOnScreenX  память после вызова
> AddUnit не изменилась но в функции _Map->QuadsOnScreenX уже не равняется 86 
> хотя в памяти там по прежнему 86. видимо оно не с того места откуда надо берет
> _Map->QuadsOnScreenX


судя по симптомам - похоже на ошибку ODR

#23
14:03, 5 сен. 2017

Вот сейчас находясь в функции AddUnit во время дебага открыл память от переменной _Map->QuadsOnScreenX. там лежит 86.  но при этом в этой функции проверка  if(_Map->QuadsOnScreenX == 86) не срабатывает.

Тут нужно код комментировать до тех пор пока в функции AddUnit  не начнет срабатывать проверка if(_Map->QuadsOnScreenX == 86)  но это долго делать придется.

#24
14:52, 5 сен. 2017

А указатель _Map валидный? Куда он указывает? Память по тому адресу кому принадлежит?

#25
14:57, 5 сен. 2017

Какое-то гадание на кофейной гуще...

Сделайте уже минимальный проект и выложите в общее пользование! Да и asm-выхлоп бы тоже не мешало посмотреть, впрочем  как и протрейсить этот момент.

Более того Intellisense иногда может сходить с ума, хотя по факту всё ок.

#26
15:45, 5 сен. 2017

Автору вроде уже ответили - брекпойнт надо ставить после проверяемой строки (то есть после операции присваивания)

#27
17:01, 5 сен. 2017

andreyu
> А указатель _Map валидный? Куда он указывает? Память по тому адресу кому
> принадлежит?
валидный.  проверял.

#28
17:02, 5 сен. 2017

FireFenix
> Какое-то гадание на кофейной гуще...
>
> Сделайте уже минимальный проект и выложите в общее пользование! Да и asm-выхлоп
> бы тоже не мешало посмотреть, впрочем как и протрейсить этот момент.
>
> Более того Intellisense иногда может сходить с ума, хотя по факту всё ок.
какраз это делаю. там много кода.  уже удалось очень много удалить. но надо еще делать и делать...

#29
19:30, 5 сен. 2017

VoidSpirit
> Автору вроде уже ответили - брекпойнт надо ставить после проверяемой строки (то
> есть после операции присваивания)
На первом скриншоте так и есть.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.