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

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

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


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

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

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

Второй вариант, это ключи запуска приложения. В проекте они могут быть прописаны явно в настройках, а при запуске вручную ты их теряешь.
...
Рейтинг: 0 / 0
28.07.2017, 15:42
    #39496764
Abejon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приложение работает неверно вне VS 2008
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
28.07.2017, 15:57
    #39496776
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приложение работает неверно вне VS 2008
AbejonФайл file1.txt не создаётся. Из чего я делаю вывод, что программа не попадает в это место.

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

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

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


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


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

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


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