Глава V. Устранение неисправностей и сообщения об ошибках

5.1. Что делать, если программа не работает?

Бывают случаи, когда вы перепробовали все, чтобы заставить эту проклятую программу заработать на данной версии Wine. Не расстраивайтесь, мы всегда здесь, чтобы помочь вам... (другими словами: "Сколько заплатите?")

5.1.1. Проверьте конфигурацию своей Wine

Посмотрите вывод команды $ wine --version, чтобы убедиться, что у вас новейшая версия Wine. Запустите winecfg и посмотрите на установки, чтобы убедиться, что они выглядят нормально. Проверьте ~/.wine/dosdevices, чтобы убедиться что c: указывает куда нужно.

5.1.2. Попробуйте разные версии Windows

В некоторых случаях изменение версии Windows может помочь.

5.1.3. Используйте различные пути (paths) для запуска

Это тоже иногда помогает. Попробуйте как wine prg.exe, так и wine x:\\full\\path\\to\\prg.exe

5.1.4. Поэкспериментируйте с настройкой DLL

Запустите WINEDEBUG=+loaddll, чтобы выяснить, какие DLL используются, и являются ли они "родными" или встроенными. Затем убедитесь, что у вас установлены правильные "родные" файлы библиотек в вашей директории C:\windows\system и поэкспериментируйте настройками очередности загрузки DLL в командной строке, либо в файле конфигурации.

5.1.5. Проверьте рабочее окружение!

Еще идея: не может ли рабочее окружение Wine быть испорченным? Убедитесь, что все в порядке с пакетами, от которых зависит работа Wine (gcc, glibc, X libraries, OpenGL (!), ...).

5.1.6. Используйте другой режим графического интерфейса

Проинструктируйте Wine посредством конфигурационного файла использовать либо desktop mode (режим рабочего стола), либо managed mode (управляемый режим), либо уродливый "нормальный" (normal) режим. Это тоже может помочь.

5.1.7. Проверьте приложение!

Может быть, ваше приложение имеет защиту от копирования? Многие виды таких защит пока не работают под Wine. Некоторые, возможно, заработают в будущем. (Уровень CD-ROM до сих пор не полнофункционален).

Идите на сайт GameCopyWorld и попытайтесь найти хороший крэк, который позволит снять защиту от копирования. Я надеюсь, что у вас легальная копия программы, но кто знает... :-)

5.1.8. Измените окружение Wine

Запуск приложения при наличии Windows раздела может драматически отличаться от такового при отсутствии Windows раздела. Настройте Wine на действия, противоположные тому, что были обычно. Также установите DCOM98 или DCOM95. Это может быть очень полезно.

5.1.9. Переконфигурируйте Wine

Иногда процесс инсталляции Wine изменяется, и новые версии Wine считаются с этими изменениями. Это особенно вероятно, если ваша установка произведена давно. Переименуйте директорию ~/.wine с целью резервного копирования. Запустите процесс установки, рекомендованный для вашей версии Wine, чтобы создать новую конфигурацию. Для сравнения используйте старую директорию ~/.wine. Для установок Wine из исходников применяйте для конфигурации Wine скрипт tools/wineinstall от имени пользователя. Это вполне безопасная операция. Позже вы сможете удалить новую директорию ~/.wine, и переименовать обратно старую.

5.1.10. Следите за сторонней информацией

Весьма возможно, что кто-то уже делал то, что вы пытаетесь проделать сейчас. Вам могут помочь следующие ресурсы:

Просмотрите WineHQ's Application Database в поисках подсказок, относящихся к вашей программе. Если ваша конкретная версия программы отсутствует в списке, просмотрите сходные версии, возможно там достаточно информации.

Frank's Corner имеет список приложений с детальными инструкциями по их установке. Дальнейшая помощь может найтись на форумах пользователей.

Может помочь Google, если уметь им пользоваться. Полезно бывает искать в Google Groups, конкретно в группе comp.emulators.ms-windows.wine

Существует IRC канал для Wine - Freenode.net. Вы можете попасть туда, используя любой IRC клиент, например Xchat. Вот необходимые настройки:
server = irc.freenode.net, port = 6667
и channel = #winehq

Если ваша программа требует Visual Basic Runtime Environment, то вы можете загрузить его с этого сайта Микрософт.

Если вам недостает DLL, например mfc42, можете найти их на сайте www.dll-files.com

Рассылочный лист Wine также может помочь, особенно wine-users. Лист wine-devel может быть полезен в зависимости от типа ваших затруднений. если вы пишете в wine-devel, то готовьтесь проделать некоторую работу по диагностике проблемы. Читайте следующий раздел, чтобы узнать, как определить источник ваших трудностей.

Если все усилия напрасны, стоит просмотреть коммерческие версии Wine на предмет поддержки вашего приложения.

5.1.11. Ищите причину!

Следующим шагом, который стоит предпринять, является поиск причины проблемы. Спектр возможных причин весьма широк - от простой ошибки в конфигурации до полной неработоспособности Wine. Следующий раздел описывает, как создать файл с отчетом об ошибке, и как начать искать неисправность. Отладочные возможности Wine описываются в Wine Developers Guide (руководство для разработчиков).

5.2. Как послать отчет об ошибке.

Пожалуйста, сообщайте об ошибках и сопутствующую информацию на сайт Wine Bugzilla. Пожалуйста, просматривайте базу данных Bugzilla, чтобы выяснить, не было ли уже отчетов по данной проблеме. Если таковые уже были, пожалуйста, добавляйте вашу информацию к первоначальному отчету.

5.2.1 Отчеты об ошибках

Вот несколько простых советов, как сделать ваш отчет более содержательным, и тем повысить вероятность ответа и исправления ошибки:

1. Включите как можно больше информации, относящейся к делу.

Это означает, что нам нужно больше информации, чем просто: "Мой MS Word "падает", когда бы я его не запускал. Вы не знаете, почему?". Добавьте, как минимум, следующую информацию:

2. Прогоните программу с переменной окружения WINEDEBUG. Например, WINEDEBUG=+relay wine sol.exe

Это приведет к выводу на консоль дополнительной информации, которая может быть полезна при отладке программы. Также это замедлит воспроизводство программы. Бывают случаи, когда ошибка, по-видимому, исчезала при использовании опции +relay. Укажете это в вашем отчете.

5.2.2. Аварийное завершение программы

Если Wine аварийно отказывает во время выполнения вашей программы, нам важно иметь информацию об этом, чтобы попытаться понять причину отказа. Отчет может занимать много места (несколько Мб), но все же лучше сохранить его в файле. Когда появится приглашение Wine-dbg>, напечатайте quit.

Вы можете попробовать +relay,+snoop вместо +relay, но, пожалуйста, помните, что +snoop довольно нестабилен и часто вызывает отказ раньше, чем просто +relay!! Отчет с отказом в коде +snoop в большинстве случаев бесполезен! Можно также подключать другие параметры, в зависимости от природы проблемы, которую вы исследуете. Для получения полного списка параметров смотрите man-страницу к Wine.

Для того чтобы вывести запись с историей событий (трассировочный лог), используйте один из следующих методов:

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

Чтобы воспользоваться этим методом, на вашем компьютере должен быть установлен язык программирования perl. Чтобы узнать, есть ли он у вас, наберите команду: which perl. Если ответ нечто вроде: /usr/bin/perl, то вы можете работать. В противном случае переходите к разделу "Трудный путь". Если вы не уверены, все-таки проделайте работу. Когда вы попытаетесь запустить скрипт, то станет весьма очевидно, если у вас не установлен perl.

2. Смените директорию на /путь-к-wine>/tools.

3. Наберите: ./bug_report.pl и следуйте указаниям.

4. Пошлите отчет на сайт Wine Bugzilla. Пожалуйста, просмотрите базу данных сайта, чтобы убедиться, что ваша проблема еще не зафиксирована, прежде чем отправлять отчет. Составьте детальное описание проблемы с сопутствующей информацией. Прикрепите "Прекрасно оформленный трассировочный лог" к письму. Не вставляйте лог в текст отчета - он слишком велик. Сохраняйте полную копию трассировочного лога, на случай, если он понадобится разработчикам Wine.

5.2.2.2. Трудный путь
Чаще всего только последние 100 (или около того) строчек трассировочного лога нужны, чтобы выяснить, где программа аварийно завершилась. Для того чтобы получить эти последние 100 строк, мы должны проделать следующее:

1. Перенаправить весь вывод программы WINEDEBUG в файл.

2. Отделить последние 100 строк в другой файл при помощи команды: tail.

Это можно проделать одним из следующих способов.

Для всех шеллов (оболочек):

$ echo quit | WINEDEBUG=+relay wine [other_options] program_name >& filename.out; $ tail -n 100 filename.out > report_file

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

tcsh и другие csh-подобные шеллы:

$ WINEDEBUG=+relay wine [other_options] program_name |& tee filename.out; $ tail -n 100 filename.out > report_file

bash и другие sh-подобные шеллы:

$ WINEDEBUG=+relay wine [other_options] program_name 2>&1 | tee filename.out; $ tail -n 100 filename.out > report_file

Файл report_file теперь содержит последние сто строк вывода отладчика включая register dump и backtrace, которые являются самыми ценными массивами информации. Пожалуйста, не удаляйте эту часть, даже если не понимаете, что она означает.

Пошлите отчет на Wine Bugzilla. Необходимо прикрепить файл report_file. Вместе с относящейся к делу информацией, о том, как вы его создали. Не вставляйте текст файла в текст самого отчета об ошибкt - он довольно велик и спутает отчет. Если вы правильно проделаете всю эту процедуру, ваши шансы на получение ответа с помощью довольно велики.

Пожалуйста, просматривайте базу данных Bugzilla, чтобы выяснить, не было ли уже отчетов по данной проблеме. Если таковые уже были, пожалуйста, добавляйте ваш файл report_file и другую информацию к первоначальному отчету.


Предыдущая Оглавление Следующая