|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2018, 18:44 | #1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Проблема с отладкой
Здравствуйте.
У меня IDE MS Visual Studio 2013 Ultimate (лицензионная), на Windwos 7 SP1 x64 (ломаной =) ). Пользуюсь студией с переменным успехом с 2013 года. Сразу проблема: отладчик не ловит исключения, без отладчика из программы исключения падают. Дальше подробное описание с примерами. Где то год назад начал замечать следующую картину: программа, запущенная без отладки (файлом или Ctrl+F5) выдаёт какую то ошибку; устанавливаю "закономерность" её проявления, иду в отладку; в отладке программа выполняет код с каким то дефектом, но исключение не выпадает. В качестве дефекта самый яркий пример - не удалось получить доступ к картинке, ибо занята другим процессом (в моём случае - другим потоком), в итоге объект как бы есть, но вместо изображения я получаю туда ErrorImage, и продолжается выполнение во что бы то ни стало. Раньше меня это не сильно смущало, так как потоки можно было синхронизоровать, и при помощи трассировки узнать, в каком именно участке кода ошибка. Сейчас у меня объекты не должны зависеть друг от друга, или от каких то внешних данных среды; когда я обнаружил проявления "В данный момент объект используется другим процессом" - прописал клонирование всех внешних данных, а там где клонировать нельзя - там воткнул lock. Ошибок стало меньше. но где то всё таки пропустил, то ли клонирование, то ли lock. (Язык C#). Как побороть проблему с отладчиком ?
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 22.03.2018 в 18:52. |
23.03.2018, 15:50 | #2 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
С самим отладчиком вроде как разобрался. Теперь начал сыпать те исключения, которые раньше игнорил.
Но моя проблема всё равно осталась, и отладчик всё равно не ловит исключение с выше описанными следствиями. Теперь мне кажется это происходит потому что ошибка выпадает за пределами пользовательского кода. Здесь видна трассировка в тексте исключения. Нет ни одной моей функции. Эта ошибка проявляется случайным образом, но так как все общие ресурсы были расклонированы (проверил, нигде не упустил ни клонирования, ни lock), и объекты используют исключительно свои экземпляры необходимых объектов. У меня есть два варианта: 1 - выполнение потока может накладываться само на себя; как это возможно - ума не приложу, поток экземпляра стартует единожды в конструкторе класса; 2 - действительно ошибка НЕ в моём коде, но в это не очень верится. И не очень хочется верить. Что делать - разумеется не имею представления. Пошёл перепиливать конструкцию.
Подпись ? Не, не слышал ...
|
23.03.2018, 16:13 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Дык выведите StackTrace куда-нибудь (просто .ToString()).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
23.03.2018, 16:39 | #4 | |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Alex11223
Цитата:
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 23.03.2018 в 16:41. |
|
23.03.2018, 16:46 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
23.03.2018, 17:33 | #6 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Alex11223, я уже сталкивался с той проблемой, что по вашей ссылке.
У меня тогда вообще программа падала полностью (как в отладчике, так и без него), потому что объекты создавались параллельно, и так же параллельно добавлялись в массив (повреждение структуры памяти процесса). Сейчас при выполнении напрямую (запуск без отладчика) программа падает. Если запускать через отладчик - всё нормально работает, при трассировке всё как предполагается. Но при выполнении идентичного участка кода, без отладки - программа падает (Завершена работа программы).
Подпись ? Не, не слышал ...
|
23.03.2018, 18:18 | #7 | ||
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
На счёт этого:
Цитата:
Код:
Я сюда не похвастаться пришёл, а констатировать факт: при произвольном поведении объектов, когда с данными всё в порядке, функция DrawImage работает "как то не так", как - я ещё не понял. Но: - в отладке во время ошибки без try-catch исключение игнорируется отладчиком; - без отладчика и без try-catch программа падает (Завершена работа программы); - если прописать в try-catch - то при наличии исключения оно обрабатывается как и должно. Что же касается этого: Цитата:
P. S. Отладчик вообще как то странно ведёт себя ... Я настроил, что бы игнорировались все исключения из System.Threading, потому что они мешают мне при отладке. Но они всё равно мешают мне при отладке, независимо от моих настроек, и независимо от того, обрабатываются эти исключения мною, или нет.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 23.03.2018 в 18:28. |
||
23.03.2018, 20:54 | #8 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Не знаю как у вас там в С#, но в Qt/C++ есть 2 класса для картинок. Так вот, 1 из них QPixmap является системно зависимым (т.е. использует нативную систему, без всяких абстракций). И в его документации явно указано - создавать и использовать ТОЛЬКО в основном потоке.
Возможно, вот это у вас и проявляется - создание/использование картинки вне GUI потока. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VS C++6.0 + Windows 7 (64), проблема с отладкой | ezus | Visual C++ | 4 | 24.02.2016 17:05 |
Проблема с отладкой | pinkiller | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 24.04.2012 22:54 |
проблема с отладкой | staaas1k | Общие вопросы C/C++ | 4 | 05.05.2010 16:36 |