Умышленно сбой внешнего процесса под Windows - PullRequest
1 голос
/ 17 ноября 2009

Я хотел бы синтезировать неисправность собственного кода. Это делается для того, чтобы мы могли видеть, где, в частности, помещаются некоторые отладочные выходные данные, когда они происходят.

Pskill (от Sys-Internals) вызывает изящный выход. DotCrash.exe, похоже, больше не доступен напрямую от Microsoft.

Есть ли какой-либо способ внешне вызвать сбой в процессе?

Ответы [ 6 ]

2 голосов
/ 18 ноября 2009

Я делал это перед использованием windbg:

  1. Запуск процесса
  2. Присоединение к процессу с помощью windbg
  3. Установка точки останова для одной из функций моего приложения
  4. Запуск приложения, пока я не достигну точки останова
  5. В windbg установка локальной переменной на что-то, что вызовет нарушение прав доступа (например, установите указатель на 0xFFFFFFFF или сбросьте значения регистра)
  6. нажмите f5, и приложение должно завершиться сбоем
2 голосов
/ 17 ноября 2009

Если то, что вы хотите, эквивалентно coredump, drwtsn32 -p ProcessId создает дамп текущего состояния запущенного процесса. Если у вас есть соответствующие символы отладки, вы можете получить ценную информацию.

НТН.

1 голос
/ 20 апреля 2010

Вы можете попробовать использовать CreateRemoteThread . Правильно использовать его нелегко, но сделать аварийное завершение другого процесса довольно просто; -)

1 голос
/ 20 апреля 2010

Если вам нужны дампы в любое время, вы можете использовать бесплатный инструмент диагностики отладки Microsoft, который имеет приятный пользовательский интерфейс для этого, или в командной строке drwtsn32 -p processid в соответствии с рекомендациями jrbjazz.

1 голос
/ 18 ноября 2009

Как упоминает Ник, это легко сделать с помощью средств отладки для Windows - хотя я бы пошел еще дальше и использовал бы cdb (командная строка WinDbg) для сценария всего взаимодействия.

0 голосов
/ 17 ноября 2009

Не могли бы вы установить какую-нибудь функцию перехвата или использовать что-то вроде обхода библиотеки?

...