powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Кажись я сломал мелкомягкую IDE...
22 сообщений из 22, страница 1 из 1
Кажись я сломал мелкомягкую IDE...
    #34534997
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
disclaimer:

winapi 2005 sp1
Весь код привести проблематично, да и никто не будет его ковырять, но надеюсь на то, что смогу внятно объяснить проблему, т.к. волнует не код, а сама проблема отладчика...

main:

перевожу проект, который был написан в MFC в WinAPI, проект довольно большой, но я только в начале пути и вот при отладке столкнулся с тем, что не могу понять как мне отследить возникающую ошибку!
breakpoints расставлены, и наблюдается следующая картина, например,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void somefunc(/*параметры*/)
{
....
/*brk_ptr1*/ some string of code;  // brk_ptr1 - первый брейкпойнт
/*brk_ptr2*/ some string of code;  // brk_ptr2 - второй брейкпойнт и т.д.
/*brk_ptr3*/ some string of code; 
/*brk_ptr4*/ some string of code; 
/*brk_ptr5*/ some string of code; 
/*brk_ptr6*/ some string of code; 
...
}

запускаю по F5, отладчик показывает, что вызвана функция somefunc и останавливается на первом брейкпойнте, затем давлю еще раз F5 и как и положено программа останавливается на втором брейкпоинте. Все вроде ок, но к середине функции возникает ситуация, когда отладчик останавливается на брейкпоинте, скажем 5, нажимаю F5, окно редактора перерисовывается и снова брейкпоинт указывает на номер 5, давлю еще несколько раз, ситуация не меняется!!! Или еще хуже может вернуться назад на 4 брейкпоинт. После еще нескольких нажатий на F5, дебаггер завершает отладку не показывая ни каких ошибок .

В программе это выглядит следующим образом: отображается окно диалога, несколько раз очень быстро перерисовывается и выходит без всяких ошибок. Штатный дебагер не замечает ни каких утечек памяти, но BoundsChecker их фиксирует при завершении программы подобным образом, что не удивительно!
Если собрать тот же проект в Release варианте, то окно программы запускается и работает так как и должно работать, по крайней мере, на данном этапе разработки.

Я не использую goto или еще каких-то хитрых переходов!

Сколько я пишу, а такой хрени не видел ни разу...

Если кто-то может пролить свет на эту хренотень не откажите в любезности. Принимаются любые советы и предложения, проверю все рац. предложения и о результатах сообщу, мамой клянус!

СПАСИБО!
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535153
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Cerebrum]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void somefunc(/*параметры*/)
{
....
/*brk_ptr1*/ some string of code;  // brk_ptr1 - первый брейкпойнт
/*brk_ptr2*/ some string of code;  // brk_ptr2 - второй брейкпойнт и т.д.
/*brk_ptr3*/ some string of code; 
/*brk_ptr4*/ some string of code; 
/*brk_ptr5*/ some string of code; 
/*brk_ptr6*/ some string of code; 
...
}
Ха! Наивный. Неужели ты тумаешь что с тобой будут играть в Поле Чудес?

Показывай давай, чего спрятал.
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535209
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ха! Наивный. Неужели ты тумаешь что с тобой будут играть в Поле Чудес?
Показывай давай, чего спрятал.

нет, не думаю, я выложу часть проекта, ты будешь его смотреть?
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535298
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum mayton
Ха! Наивный. Неужели ты тумаешь что с тобой будут играть в Поле Чудес?
Показывай давай, чего спрятал.

нет, не думаю, я выложу часть проекта, ты будешь его смотреть?

У тебя брекпоинты в разных потоках?

Если нет, но можно сузить размер кода.
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535499
рискну предположить следующие ситации:

- многопоточность
- рассинхронизация исходников и кода
- наличие флагов оптимизации компилятора
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535583
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535588
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34535592
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34537382
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже виновник найден.

вот эта функция в шаблонном классе похоже некорректно отрабатывает, если оставляю только
return false программа начинает работать также как release сборка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
bool Find(KeyType nIndex, DataType& dtRet)
	{
		if(GetSize())
		{
			map<KeyType, DataType>::iterator iter = m_map.find(nIndex);
			if(iter->first == nIndex)
			{
				dtRet = iter->second;
				return true; // нашли
			}
		}
		return false; //ошибка
	}


--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34537388
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправил на
Код: plaintext
1.
2.
3.
4.
5.
6.
...
if(iter != m_map.end())
{
	dtRet = iter->second;
	return true; // нашли
}
...
и все заработало

в шоке
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34537637
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
засунул счетчик в обработчик сообытия WM_PAINT, на каждую отрисовку приходится 35 (!!!) вызовов этой функции, это нормально для простого контрола?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34537723
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumпоправил на
Код: plaintext
1.
2.
3.
4.
5.
6.
...
if(iter != m_map.end())
{
	dtRet = iter->second;
	return true; // нашли
}
...
и все заработало

в шоке
--------------------------------------------------------------
[не претендую на уникальность]
От чего? В каждом контейнере есть элемент который обозначает конец контейнера, на него указывает то что возвращает end А вот то что лежит в этом элеменете- мусор
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34537763
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded
От чего? В каждом контейнере есть элемент который обозначает конец контейнера, на него указывает то что возвращает end А вот то что лежит в этом элеменете- мусор
от того что я был blind


как думаешь 35 раз WM_PAINT это нормально?
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538072
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стоит студия 2003 и уже несколько раз было примерно следующее:
strcpy(tmp1, tmp2);

в результате в tmp1 оказывалось вовсе не то, что было в tmp2, тоже самое происходило при передаче параметра любой др. ф-ии, причем любого типа, при этот отладчик в некоторых моментах может "прыгать" назад и вперед

банальный перезапуск студии и винды не помогает, был найден такой метод: добавляется строчка кода, хотябы та же strcpy(tmp1, tmp2), проект ребилдится, после чего добавленная строчка удаляется, снова ребилдится и дальше все в порядке
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538124
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если strcpy_s?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538152
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumа если strcpy_s?
--------------------------------------------------------------
[не претендую на уникальность]

там с размерами все в порядке, да и strcpy я привел исключительно как пример, там могло быть что угодно, просто студия начинает гнать внезапно и все тут, за год это случилось всего 3 раза, но первый и второй случай я потратил уйму времени, т.к. верил в ее непогрешимость

а вообще strcpy_s в 2003 студии разве имеется?
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538171
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikа вообще strcpy_s в 2003 студии разве имеется?
не помню, давно уже не писал в этой версии
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538347
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumкак думаешь 35 раз WM_PAINT это нормально?
И что с одними и теме же аргументами?
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538413
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded Cerebrumкак думаешь 35 раз WM_PAINT это нормально?
И что с одними и теме же аргументами?
да, специально ставил watch
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538416
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а spy показывает один вызов WM_PAINT
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538431
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetWindowText пораждает WM_PAINT? если да, то я понял что сам дурак: сам генерил перерисовку контрола, когда показывал сколько раз вызвана функция и занося значение счетчика в текст контрола, который заставлял его перерисовываться, а если нет то я теряюсь, потому что занося текст в заголовок диалога вызовы WM_PAINT происходят так как и показывает Spy
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Кажись я сломал мелкомягкую IDE...
    #34538446
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так выводи значение счётчика в другой контрол :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Кажись я сломал мелкомягкую IDE...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]