Аварийные завершения

Предупреждение Этот документ собирался в течение длительного периода, и некоторые ответы могли устареть. Если вы обнаружили Q/A содержащий устаревшую информацию, расходящуюся с документацией или актуальным поведением приложения, в конце страницы есть ссылка «Предложить правку».

Q. При завершении консольной программы возникает ошибка вида: Access violation at address 6F78DE5B in module ‘ConEmuHk.dll’. Read of address 0071004E

A. Возможная причина - эта консольная программа порушила свою таблицу импортов. Решение - обратиться к ее разработчику. Для более точного вердикта “кто виноват” можно прислать мне минидамп.

Q. ConEmu или консольное приложение зависает при выходе?

A. Ни одного Issue на эту тему еще не было создано. Тем не менее, если случилось зависание при выходе, сделайте дампы памяти процессов ConEmu*.exe, ConEmuC*.exe и и всех процессов этой консоли (far.exe, cmd.exe, …). Как это сделать смотрите ниже. Заархивировать и прислать файлы разработчику. Для создания правильного дампа 32битного приложения в 64битной ОС нужно использовать ConEmu.

Q. Как создать дамп памяти приложения?

A. Windows XP и выше.

Нажмите Win+R и введите команду, она создаст полный дамп памяти процесса (может быть довольно большим).

C:\Program Files\ConEmu\ConEmu\ConEmuC.exe /DEBUGPID=ИД_Процесса /FULL

Или другую команду, для создания малого дампа памяти. Малый дамп, к сожалению, может не содержать необходимой информации.

C:\Program Files\ConEmu\ConEmu\ConEmuC.exe /DEBUGPID=ИД_Процесса /MINI

Вам будет предложено выбрать имя файла дампа памяти процесса. Как узнать ИД_Процесса читайте ниже.

Внимание! При создании дампов Far Manager убедитесь, что вы запускаете “far.exe” с ключом “/x”.

A. Windows 7 и выше.

Внимание! Этот метод допустим только для процессов той же битности, что и OS. То есть создать корректный дамп для 32битного процесса в 64битной OS не получится.

Открыть Диспетчер задач Windows, перейти на вкладку ‘Процессы’ и в контекстном меню выбрать пункт ‘Создать файл дампа памяти’.*

A. Process Explorer.

Дампы памяти умеет создавать утилита «Process Explorer», но с ее помощью создать корректный дамп для 32битного процесса в 64битной OS также не получится.

Q. Как узнать ИД процесса (PID)

A. Идентификатор процесса (PID) можно узнать по имени процесса (ConEmu.exe, cmd.exe, etc.)

  • в Диспетчере задач Windows на вкладке Процессы есть колонка ИД процесса;
  • в строке статуса ConEmu;
  • в диалоге Settings на вкладке «Info».

Примечание! В некоторых случаях колонка ИД Процесса может не отображаться в Диспетчере задач Windows.

  • Windows 7 и ниже: Диспетчер задач -> Вкладка «Процессы» -> Меню -> Вид -> Выбрать столбцы -> «PID».
  • Windows 8: Диспетчер задач -> Включить «More details» -> Вкладка «Процессы» -> Правый клик мышкой на заголовке колонок -> «PID».

Q. Как запустить Диспетчер задач Windows

A. Нажмите Ctrl+Shift+Esc или щелкните правой кнопкой мышки по панели задач и выберите пункт меню «Диспетчер задач».

Q. Что означает: ConEmuC: CreateFile(CONOUT$) failed, ErrCode=0x00000005

A. Запускаемая программа создала и установила в консоли собственный буфер, созданный как CreateConsoleScreenBuffer(..., 0/*No sharing*/, ...). Просите автора программы создавать буфер корректно, а не только для себя:

(GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,...)