Двойная переменная назначена 0 при прохождении (F10) C ++ Код в отладке в Visual Studio 2022, xmm0 resgre ПроблемаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Двойная переменная назначена 0 при прохождении (F10) C ++ Код в отладке в Visual Studio 2022, xmm0 resgre Проблема

Сообщение Anonymous »

Я столкнулся с проблемой назначения значений двойным переменным при переходе (F10) моего кода. Это произошло только тогда, когда я использовал пошаговый (F10). Если я использовал запуск (F5) с точками останова, назначение ведет себя правильно. Также при запуске кода (та же конфигурация отладки) без отладки поведение было верным. Я упростил его до минимальной функции, где было только назначение постоянной плавающей запятой.
Я знаю, что эта функция ничего не делает, но это делает ее более заметным. Оптимизация отключена, поэтому код действительно выполняется. Я испытал то же поведение в сложных функциях. Это только для того, чтобы показать проблему.
Я не думаю, что ни в коем случае точка выполнения попадает в условие IF, но это происходит с F10. < /P>
Это функция < /strong> для иллюстрации: < /p>

Код: Выделить всё

int AktualizujEfektivnuSadzbuDebug()
{
double cerpana_suma = 7.7;

cerpana_suma = 12.3;

if (cerpana_suma 
На самом деле нет причин, по которой он должен войти в условие if. Их я использую f5, это не так. Но если я использую F10 из точки останова на assigmnent "cerpana_suma = 12,3", то 0 назначается в переменную. И кондиционирование проверяет его на 0 положительно. < /P>
Разборка линии выглядит так: < /p>
551A5E03  movsd       xmm0,mmword ptr [__real@402899999999999a (55E26F48h)]
551A5E0B  movsd       mmword ptr [cerpana_suma],xmm0
Значение по адресу 0x55e26f48 является правильным:

xmmpling overpling. Первая строка ассемблера выше установлена ​​на 0 вместо постоянной из памяти 0x55e26f48!

на самом деле. /> После выполнения второй строки ассемблера выше, переменная «cerpana_suma» при 0x020fc1c8 установлена ​​на 0, что на самом деле является следствием недопустимого выполнения первой строки. src = "https://i.sstatic.net/22icqxm6.png"/>
Поэтому выполнение кода, если положительно оценка условия (cerpana_suma
желаемое поведение при этом приведет к тому же результату, что и удар F5, и оба дают один и тот же результат, что и запуск кода в целом.
, что может быть неправильно, что поведет в поведении между F10. Есть ли у кого -нибудь решение, так что по сравнению с правильной работой с регистрацией XMM0? Есть ли у кого -нибудь обходной путь? Уровень информации отладки установлен на максимум. Я пытался с вариантом динамической отладки и без него. Объявление переменной как летучая, не помогает. < /P>
Полные экраны отладки (память, реестр, разборка)




Подробнее здесь: https://stackoverflow.com/questions/797 ... ug-in-visu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»