Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 15.03.2011, 10:42  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Программа пропускает строки кода при отладке

Добрый день, подскажите, почему программа пропускает строки кода при отладке:
вызываю функцию
Код:
void NumImp(){
	num=88;	

	if((num-128)›=0)
	{			
		num=num-imp2;
		impNum2=numTakt››1;
	}
	else{ impNum2=0;}

	if((num-64)›=0){			
		num=num-imp4;
		impNum4=numTakt››2;
	}else{ impNum4=0;}
}
При этом отладчик проскакивает строку "num=88" . До входа в эту функцию "num=89" . Почему выполняется первое условие
Код:
if((num-128)›=0)
?
Реклама:
sanstan вне форума  
Непрочитано 15.03.2011, 10:48  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке.

http://www.pic24.ru/doku.php/osa/art...e_for_chainiks
__________________
warez
urry вне форума  
Сказали "Спасибо" urry
sanstan (15.03.2011)
Непрочитано 15.03.2011, 11:09  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

Парадокс- если num =88 , и затем - вычитание, и спрашивается- num-128 больше нуля? Что ответить?
OlegNZH вне форума  
Непрочитано 15.03.2011, 11:23  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

Сообщение от sanstan Посмотреть сообщение
подскажите, почему
А типы переменных какие?
Сообщение от OlegNZH Посмотреть сообщение
Парадокс- если num =88 , и затем - вычитание, и спрашивается- num-128 больше нуля? Что ответить?
Да где же он, парадокс-то?
Происходит "заём". В результате 88-128=200. Больше "0"?

Последний раз редактировалось omercury; 15.03.2011 в 11:38.
omercury вне форума  
Непрочитано 15.03.2011, 11:33  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

To Urry:
Спасибо, решил сразу много проблем.
sanstan вне форума  
Непрочитано 15.03.2011, 11:35  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,696
Сказал спасибо: 130
Сказали Спасибо 1,089 раз(а) в 521 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

Скорее всего компилятор произвел оптимизацию и выкинул неиспользованный код.
Из
Цитата:
num=88;

if((num-12›=0)
{
num=num-imp2;
impNum2=numTakt››1;
}
else{ impNum2=0;}
сделано
Цитата:
num=88-imp2;
impNum2=numTakt››1;
Т.е. ты в принципе не можешь встать на отладку в данном операторе, так как он удален в процесс оптимизации.

С аналогичной ситуацией в Дельфи неоднократно сталкивался. Хочу просмотреть значение локальной переменной при отладке, а в ответ "переменная удалена в ходе оптимизации". Т.е. результат считается сразу без занесения в промежуточные переменные.
DanilinSA вне форума  
Непрочитано 15.03.2011, 11:47  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

Сообщение от omercury Посмотреть сообщение
А типы переменных какие?

Да где же он, парадокс-то?
Происходит "заём". В результате 88-128=200. Больше "0"?
Так в том-то и Интересность, как переменная объявлялась, а вдруг- плавующая?
И откуда такой бумк, не мог-же я столько шуму наделать? И откуда взялась эта зелёная тряпочка? (c) Просто- начерта присваивать-переменным значения- а потом их-уже известными-сравнивать? Если это- отладка- сорри(так скорее всего и есть), но в заблужение вводить,листинги нужно нормальными давать!

Последний раз редактировалось OlegNZH; 15.03.2011 в 11:56.
OlegNZH вне форума  
Непрочитано 15.03.2011, 11:49  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

Да , переменные были unsigned . Заменил на знаковые, все отлично работает!
sanstan вне форума  
Непрочитано 16.03.2011, 00:39  
tanq
Гражданин KAZUS.RU
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Программа пропускает строки кода при отладке

Когда пропускаются строки, то есть 2 наиболее вероятных причины:
1. Проект скомпилирован с оптимизацией кода. В этом случае в програме теряется прямое сответствие между строками и ассемблерным интсрукциями, трассировка начинает подглючивать.
2. Еще при оптимизации часто наблюдается выкидываие переменных и лишних кусков кода. Отладчики часто глючат на отсутствующих кусках и часто падают при наличии optimixed out перменных если включен watch.
tanq вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Виснет IAR при отладке AT91SAM9x512 + AT91SAM-ICE svad0 Микроконтроллеры, АЦП, память и т.д 6 30.01.2011 14:56
Скорость кода при вложенных IF MasterMushi Микроконтроллеры, АЦП, память и т.д 3 16.01.2011 16:42
Программа сбрасывается при включении sei() sanstan Микроконтроллеры, АЦП, память и т.д 17 27.12.2010 21:07


Часовой пояс GMT +4, время: 13:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot