Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 23.03.2019
Сообщений: 2

Проблема запуска при смене места запуска

23.03.2019, 15:56. Показов 1364. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Есть проект на C++(игра), использующая несколько файлов и библиотек. После добавления очередной фичи, появилась странная вещь: в Visual Studio сборка компилируется и запускается, а при запуске exe файла в отдельной папке программа вылетает с ошибкой Access Violation. Проблема в том, что кода уже довольно много и сходу ошибку не найти, а т.к. в Visual studio всё работает нормально, то и дебагом воспользоваться не могу. Есть ли какие-то способы всё же поймать эту ошибку?

Добавлено через 1 час 25 минут
После отката до предыдущей версии ошибка всё равно происходит, хотя раньше всё работало. В чём приблизительно может быть проблема?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2019, 15:56
Ответы с готовыми решениями:

Ошибка запуска Eclipse. Исчезает ехе файл запуска
Привет всем :P Изучаю С++ на Eclipse. Создал проект Hello World. Нажимаю Run - все хорошо. Меняю немного код , дополняю его , совсем...

QProcess, особенности запуска .exe, отличие от запуска руками
Есть экзешник, подключается к оракловской базе. Если его запустить руками - всё отлично, но если программно, QProcess::startDetached или...

Проблема запуска приложения от имени пользователя
Здравствуйте. Мне необходимо написать программу, создающую файл в указанной директории. При этом папка может быть защищенной, в таком...

3
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
23.03.2019, 16:19
Лучший ответ Сообщение было отмечено Samilen как решение

Решение

Цитата Сообщение от Samilen Посмотреть сообщение
Проблема в том, что кода уже довольно много и сходу ошибку не найти
На лицо проблемы проектирования, нету юнит тестов покрывающих хотя бы часть кода и как я понимаю логера - тоже.
Цитата Сообщение от Samilen Посмотреть сообщение
а при запуске exe файла в отдельной папке программа вылетает с ошибкой Access Violation
При вашем подходе к созданию программ чему Вы удивляетесь?
Разве кто-то давал гарантии что ваша программа будет работать?
Вы, еще даже, наверное, не пробовали ее запустить на другом компе.
Цитата Сообщение от Samilen Посмотреть сообщение
Проблема в том, что кода уже довольно много и сходу ошибку не найти
О чем я и говорил в начале.
Цитата Сообщение от Samilen Посмотреть сообщение
в Visual studio всё работает нормально, то и дебагом воспользоваться не могу
Ладно, попробуй включить что бы студия выдавала все варнинги /Wall или как-то так выглядит флаг.
Потом попробуй включить оптимизацию О2, например, ребилдни, посмотри что будет.
Дальше, поскольку логера у тя нету скорее всего, вместо него добавь ассертов в те места где идет обращение к памяти.
Т.к. "Access violation" в переводе с английского языка означает "нарушение доступа".
При чем скорее всего когда идет попытка доступа к еще не выделенной памяти или уже освобожденной через указатель (это самый частый пример).
Просмотрите места где вы передаете указатель как параметр, убедитесь, что он передается правильно и вы не создаете случайно неполную копию. Затем проверьте, не изменяются ли непреднамеренно значения где-нибудь в программе путем создания точки останова по данным для рассматриваемого указателя, чтобы убедиться, что он не изменяется в другом месте программы.
Еще немного для раздумий где можно искать ошибку:
- Есть в строке []? - подумаем, а не может ли у нас быть неверный индекс?
- Есть работа с объектами? Проследим, какова логика работы - не удаляется ли объект раньше времени?
- Используем DLL (исходя из ваших слов что Вы юзаете библиотекм)? А правильно ли объявлена функция? А уж не обмениваемся ли мы динамическими данными (строками, там, массивами)?
и т.д.
1
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
23.03.2019, 16:20
Цитата Сообщение от Samilen Посмотреть сообщение
Есть ли какие-то способы всё же поймать эту ошибку?
Запуск под дебагером внешнего файла или тест с релизной версией.

В чём приблизительно может быть проблема?
Наиболее вероятно - не инициализированные переменные. Может из-за разных рабочих каталогов при запуске напрямую и в среде, но менее вероятно. Вообще, может быть что угодно, нужно отлаживать.
0
0 / 0 / 0
Регистрация: 23.03.2019
Сообщений: 2
23.03.2019, 17:17  [ТС]
Ошибка оказалась максимально простой. Приму к сведению совет по написанию логера, т.к. с ним проблема бы решилась не за 4 часа, а за 5 минут. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.03.2019, 17:17
Помогаю со студенческими работами здесь

Проблема при запуске ноутбука (чёрный экран с курсором после запуска)
Всем добрый вечер:) У меня возникла проблема при включении ноутбука. :help: Вчера при завершение работы установилось обновление....

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

Программа запоминает путь до предыдущего места запуска
Чтобы понять суть проблемы, нужно дочитать до конца, уже сутки голову ломаю, надеюсь вы поможете.... Пишу программу для блокировки ВК...

Как разделить строку запуска на путь файла и параметры запуска?
Казалось бы очень странный вопрос, но тем не менее. Даже не знаю как правильно сформулировать, что бы гугл спросить. Есть массив строк...

Можно ли поставить таймер запуска на батинке, чтоб программа начинала работу через 30 минут после запуска
Можно ли поставить таймер запуска на батинке? Чтоб программа начинала работу через 30 минут(например) после запуска


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru