2015-05-12 2 views
-1

Я закодировал большой проект, который запускается, когда я открываю его в режиме отладки или выпуска, но когда я его открываю без отладки (ctrl + f5), он сбой. Я долго искал, чтобы найти ошибку кучи, но ничего не нашел. Проблема в том, что мне нужен запущенный .exe программы, поэтому я хотел спросить, есть ли возможность связать отладчик окон с .exe, чтобы он всегда начинался с него.Ссылка на отладчик Windows на проект

+0

Есть ли у вас отзыв, когда он падает? Сообщение об ошибке/Активировать стрельбу? – doctorlove

+0

Нет, через 3 - 5 секунд, но я думаю, что у меня более одной ошибки. Нет, он просто не отвечает, когда я открываю его с помощью верификатора приложения, он возвращает abort() – Jesaya00

+0

Можете ли вы написать несколько тестов вокруг определенных функций, чтобы попытаться сбросить то, что из-за сбоя? – doctorlove

ответ

0

Если он не врезаться сразу, может быть, это помогает:

  1. Вы можете запустить исполняемый файл.
  2. Откройте свое решение в визуальной студии. Убедитесь, что это одна и та же сборка.
  3. Откройте меню DEBUG и нажмите «Прикрепить» к процессу.
  4. Откроется окно с описанием всех запущенных процессов. Выберите исполняемый файл, которого сбой
  5. Снова откройте меню DEBUG и выберите Исключение (Ctrl-Alt-E)
  6. Убедитесь, что флажок «Брошенный» проверяются на Common Language Runtime Исключение
  7. Теперь сбой приложения .. It остановится на линии, которая вызывает его.

Также ищите директивы по окружающей среде. например #IF DEBUG #END IF. или #IF RELEASE. Такие вещи. Несколько раз обманул меня.

Удачи. Надеюсь это поможет!

+0

Он падает через 3 - 5 секунд – Jesaya00

+0

Вам нужно будет щелкнуть очень быстро, я боюсь .. Мне жаль, что мой ответ был не слишком полезен. Удачи, надеюсь, вы найдете причину аварии. –

+0

К сожалению, это не помогает, я даже попробовал верификатор приложения, но он просто возвращает прерывание. Я так подавлен, я даже заплатил бы за это, чтобы исправить эту ошибку ... – Jesaya00

0

Вы можете делать различные вещи. Сначала убедитесь, что у вас есть «большой блок try» в основном. то есть поставить основную логику в попытке, можно поймать исключения и четко рассказать об этом. Вероятно, это не то, что происходит в вашем случае.

Вы можете подключить отладчик, включая Visual Studio, к запущенному процессу - см. Параметр «Приложить к процессу» в меню отладки. Если он построен с помощью отладочных символов, которые вы можете сделать, даже для кода выпуска это может помочь. Если он оптимизирован, вам может быть сложно.

Наконец, вы можете создать аварийный дамп и проверить, что после его отказа. См. Документы на странице MiniDumpWriteDump. На его usage есть несколько примеров. Или вы можете установить обработчик прерывания: См. here. Это упоминает _set_abort_behavior, который при вызове с _CALL_REPORTFAULT также генерирует свалку.