Как я могу отладить процесс win32, который неожиданно завершается тихо?

Измените функцию на

function addRemoveLabel() {
lastWidth = $(window).width();
if (lastWidth <= 1150 && lastWidth > 975) {
  console.log('1150');
  addClass();
} else if (lastWidth <= 975 &&lastWidth > 680) {
  console.log('975');
  removeClass();
} else if (lastWidth <= 680) {
  console.log('680');
  addClass();
} else {
  removeClass();
}

}

7
задан Matthew Xavier 18 December 2008 в 16:20
поделиться

10 ответов

Вы могли попытаться использовать adplus утилиту в пакете средства отладки окон.

adplus -crash -p yourprocessid

Автоматический инструмент дампа обеспечивает мини-дампы для исключений и полный дамп если сбои приложения.

5
ответ дан 6 December 2019 в 10:04
поделиться

При использовании Visual Studio 2003 или позже необходимо включить отладчики "Первое Случайное Исключение" функция обработчика путем включения ВСЕХ Параметров разрыва Исключения Отладки, найденных в соответствии с Меню Отладки | Диалоговое окно Исключений. Включите КАЖДУЮ опцию прежде, чем запустить отладочную сборку процесса в отладчике.

По умолчанию большинство этих Первых Случайных Обработчиков исключений в отладчике выключено, поэтому если Windows или Ваш код выдадут исключение, то отладчик ожидает, что Ваше приложение обработает его.

Первая Случайная система Исключения позволяет отладчикам прерывать КАЖДОЕ возможное исключение, выданное Процессом и/или Системой.

http://support.microsoft.com/kb/105675

4
ответ дан 6 December 2019 в 10:04
поделиться

Все другие отправленные идеи хороши.

Но это также кажется, что приложение называет аварийное прекращение работы () или оконечным ().

Если Вы работаете, это в отладчике установило точку останова и на этих методах и на выходе () просто в придачу.

Вот список ситуаций, которые заставят оконечный быть названными из-за исключений, идущих не так, как надо.

См. также: Почему деструктор не называют на исключении?

Это показывает, что приложение завершится (), если исключения не будут пойманы. Поэтому всуньте основной блок выгоды (), который сообщает, что ошибка (к файлу журнала) затем повторно бросает.

int main()
{
    try
    {
        // Do your code here.
    }
    catch(...)
    {
        // Log Error;
        throw;  // re-throw the error for the de-bugger.
    }
}
3
ответ дан 6 December 2019 в 10:04
поделиться

Ну, проблема - Вы, получают нарушение прав доступа. Можно хотеть присоединить с WinDBG и включить все фильтры исключения. Это все еще не может помочь - мое предположение - Вы, получают повреждение памяти, которое не выдает исключение.

Можно хотеть посмотреть на включение полной проверки pageheap

Вы могли бы также хотеть проверить этот более старый вопрос о повреждении "кучи" для некоторых идей об инструментах.

2
ответ дан 6 December 2019 в 10:04
поделиться

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

Это - возможность в Вашем приложении?

2
ответ дан 6 December 2019 в 10:04
поделиться

Вы могли проверить Windows Logs in Event Viewer в Windows.

1
ответ дан 6 December 2019 в 10:04
поделиться

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

Обычно отлаживая и регистрируя предоставление ортогональная информация. Если Ваш отладчик будет бесполезен, вероятно, то журнал поможет Вам.

1
ответ дан 6 December 2019 в 10:04
поделиться

Это могло быть вызовом к _exit () или некоторый эквивалентный Windows. Попытайтесь установить точку останова на _exit...

1
ответ дан 6 December 2019 в 10:04
поделиться

Вы попробовали Линт ПК и т.д. и выполнили его по Вашему коду? Попытайтесь компилировать с максимальными предупреждениями, Если это - приложение.NET - используют Полицейского FX.

0
ответ дан 6 December 2019 в 10:04
поделиться

На ум приходят возможные причины.

  • TerminateProcess ()
  • Исключение переполнения стека
  • Исключение при обработке исключения

Последнее, в частности, приводит к немедленному отказу приложения.
Переполнение стека - вы можете получить уведомление об этом, но маловероятно.

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

0
ответ дан 6 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: