powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Приложение работает неверно вне VS 2008
16 сообщений из 16, страница 1 из 1
Приложение работает неверно вне VS 2008
    #39496657
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть приложение. Запускаю его из VS 2008 - отрабатывает нормально. Запускаю самостоятельно - работает некорректно. Поставил логгирование - не срабатывает(?) таймер. Во всяком случае, в точку обработки события OnTimer не заходит. И debug и release версии.
В чём может быть дело?
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbejonВ чём может быть дело?

Причина неверной работы программы бывает всего одна - баг в программе. Отлаживайся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496679
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, thanx a lot, cap!
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496696
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAbejonВ чём может быть дело?

Причина неверной работы программы бывает всего одна - баг в программе. Отлаживайся.


А ведь Дмитрий дело говорит...
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496702
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, так я и спрашиваю, в чём может быть дело? Куда рыть-то?
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496706
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть ты там поведаешь, что за ошибка у тебя, может быть у тебя есть какие-то диагностические сообщения, может быть ты код нам покажешь?

Ты знаешь, это всё здорово помогает найти причину проблемы...
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496757
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbejonЕсть приложение. Запускаю его из VS 2008 - отрабатывает нормально. Запускаю самостоятельно - работает некорректно. Поставил логгирование - не срабатывает(?) таймер. Во всяком случае, в точку обработки события OnTimer не заходит. И debug и release версии.
В чём может быть дело?

Когда ты запускаешь программу из VS, то по умолчанию для программы рабочим каталогом является каталог проекта. Если программа имеет зависимости от файлов или каких-то библиотек (lib, dll), которые есть в каталоге проекта, но их никто не положил в папки Release и Debug, то программа работать не будет.

Второй вариант, это ключи запуска приложения. В проекте они могут быть прописаны явно в настройках, а при запуске вручную ты их теряешь.
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496764
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivМожет быть ты там поведаешь, что за ошибка у тебя, может быть у тебя есть какие-то диагностические сообщения, может быть ты код нам покажешь?

Ты знаешь, это всё здорово помогает найти причину проблемы...

Я ведь написал: Abejon в точку обработки события OnTimer не заходит. И debug и release версии.
Вот код. Запуск таймера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LRESULT CMainFrame::OnLostConnection(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
	if (!m_restartTimerIsActive)
	{
		SetTimer(_RELOAD_TIMER_, LOST_CONNECTION_TIMEOUT, NULL);
		m_restartTimerIsActive = TRUE;
	}
	bHandled = TRUE;
	return TRUE;
}


Вот код обработки события OnTimer:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
LRESULT CMainFrame::OnTimer(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	//stand-by timer
	switch (wParam)
	{
		case _STANDBY_TIMER_:
			{
				LASTINPUTINFO lii;
				lii.cbSize = sizeof(lii);
				if(GetLastInputInfo(&lii))
				{
					//Get tick count as difference
					const DWORD nDifIdle = GetTickCount() - lii.dwTime;
					if(nDifIdle < m_iNormalToStandby*1000)
					{
						standBy(false, false);
						SetTimer(_STANDBY_TIMER_, m_iNormalToStandby*1000 - nDifIdle, NULL);
					}
					else if(m_iMode != _STANDBY_)
					{
						standBy(true, false);
						SetTimer(_STANDBY_TIMER_, 1000, NULL);
					}
				}
			}
			break;
		case _UPDATE_TIMER_:
			{
				Invoke("Update", "auto");
			}
			break;
		case _RELOAD_TIMER_:
			{
	                        // создаю файл, чтобы понять, заходит ли сюда программа
				HANDLE FileHandle=CreateFile(_T("e:\\file1.txt"),GENERIC_READ | GENERIC_WRITE, 
					FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 0);
				CloseHandle(FileHandle);

				RA_ActivateRestartProcess();
				ExitProcess(0);
			}
			break;
	}
	return S_OK;
}



Файл file1.txt не создаётся. Из чего я делаю вывод, что программа не попадает в это место. Но только при запуске автономно. При запуске из VS 2008 через F5 и через Ctrl+F5 всё отрабатывает нормально - создаётся файл, и перезагружается приложение..
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496776
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbejonФайл file1.txt не создаётся. Из чего я делаю вывод, что программа не попадает в это место.

А ещё можно гадать по звёздам или кишкам чёрного петуха. Поставь в ключевых местах вывод
ключевых параметров в текстовый лог и анализируй как именно твоя программа работает. Так
ты найдёшь место, где твоё воображение начинает расходиться с реальностью. Это и
называется процессом отладки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496794
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, а какие места и параметры являются ключевыми?
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39496821
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abejonа какие места и параметры являются ключевыми?

Места в которых принимаются решения об изменении потока управления и параметры на основе
которых эти решения принимаются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39497134
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abejon
Файл file1.txt не создаётся. Из чего я делаю вывод, что программа не попадает в это место. Но только при запуске автономно. При запуске из VS 2008 через F5 и через Ctrl+F5 всё отрабатывает нормально - создаётся файл, и перезагружается приложение..

0)добавь в начале программы message box или консольный ввод чего-то.
1) запусти программу вне студии, ничего не вводи
2) из студии сделай attach к уже работающему твоему приложению.
3) найди в отладчике, почему оно работает не так, как тебе бы хотелось
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39497466
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abejon
Код: plaintext
1.
		SetTimer(_RELOAD_TIMER_, LOST_CONNECTION_TIMEOUT, NULL);


Поставь сюда MessageBox и убедись, что эта строчка выполняется.
И там же выведи _RELOAD_TIMER_, LOST_CONNECTION_TIMEOUT, у меня подозрение, что они не проиничены
Ещё вариант, почему (если) таймер работает, а файл не создаётся: у студии права на диск e:\ есть, а у собранной программы - нету.
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39497469
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abejon, оказалось, что таймер не имел прав на выполнение ExitProcess. Студия же запускается с повышенными правами, поэтому в ней всё работает. Поэтому решил проблему следующим образом: вместо вызова ExitProcess по таймеру бросаю событие через PostMessage, в обработке которого и вызываю ExitProcess.
Всем спасибо.
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39497471
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbejonAbejon, оказалось, что таймер не имел прав на выполнение ExitProcess. Студия же запускается с повышенными правами, поэтому в ней всё работает. Поэтому решил проблему следующим образом: вместо вызова ExitProcess по таймеру бросаю событие через PostMessage, в обработке которого и вызываю ExitProcess.
Всем спасибо.


Что за бред ты написал, объясни пожалуйста...
Имеют или не имеют права процессы, а SetTimer или то, что по нему вызывается - это функции твоего приложения. Приложение имеет одни наборы прав на все функции.

Также, если у тебя VS запускается с расширенными правами, никто не запрещает тебе запустить её без таковых.
...
Рейтинг: 0 / 0
Приложение работает неверно вне VS 2008
    #39499423
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, я написал то, что есть.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Приложение работает неверно вне VS 2008
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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