Что является преимуществами использования Системы. Диагностика. Отладчик. Повреждение () по Присоединению к Процессу?

Вам не нужен никакой инструмент, и Вы не должны анализировать PE. Просто используйте стандартный API Win32 (D)

, код (в C) много раз публиковался на Рекламе. API Win32 ng (news://comp.os.ms-windows.programmer.win32) (с 1992...)

6
задан Peter Mortensen 22 February 2016 в 11:48
поделиться

2 ответа

Однажды я работал над приложением на основе плагинов, которое многое делало при запуске. Среди прочего, он сделает открытие плагинов. Я не мог запустить его напрямую из Visual Studio, поэтому F5 не подходил, но и Attach to Debugger тоже не подходил, потому что много раз мне приходилось отлаживать все это происходит при запуске. Я бы никогда не смог его вовремя поймать с помощью Attach to process. Поэтому я просто установил Debugger.Break () именно там, где хочу.

Другой пример; Я писал командлет для PowerShell. Те, которые вы не запускаете в Visual Studio; вы запускаете их из командной строки PowerShell. Обычно это быстрые небольшие приложения, и вы не сможете их вовремя поймать с помощью Attach to Process .

12
ответ дан 8 December 2019 в 13:01
поделиться

В дополнение к ответу BFree я обнаружил, что Break иногда бывает полезен при работе с плохо спроектированным устаревшим продуктом. Этот конкретный продукт имел дурную привычку проглатывать или игнорировать исключения, а его механизмы ведения журнала не работали должным образом (фактически, никогда). Он часто нарушал многие передовые практики, которые требовали, чтобы клиенту «повезло» заставить его работать во время выполнения. Я начал добавлять краткую аннотацию кода:

if(System.Diagnostics.Debugger.IsAttached)
{
    System.Diagnostics.Debugger.Break();
}

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

Да, я знаю, что это не так. Это особенно хорошая практика, и я бы никогда не стал делать это в новом коде. Но поверьте мне, если бы вы копались в этой кодовой базе, вы бы сделали нечто подобное. ;)

6
ответ дан 8 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

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