Главная Мой профиль Регистрация Выход Вход
Приветствую Вас Гость | RSS
Вторник
19.03.2024
10:14
Установка Игр в Ubuntu
Темы
...
 
Форма входа
Главная » Статьи » Wine на практике

Wine - поиск ошибок

Wine - поиск ошибок (скрипт)

Скрипт отладки программ, запускаемых из под Wine, поможет как новичкам для составления вопросов на форумах об ошибках программ, так и для личного использования :) 

скачать

Внимание! Для работы скрипта требуется установленный пакет zenity, присутствует в большинстве дистрибутивов Ubuntu по умолчанию, иначе можете установить его из "Центра приложений Ubuntu или командой sudo apt-get install zenity"

Особенности:

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

Версия Wine;

Имя дистрибутива Linux и его версия;

Количество оперативной памяти (в мегабайтах);

Информация об имеющихся видеокартах;

OpenGL.

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

Удалены сообщения класса FIXME (полезны в основном разработчикам);

Удалены одинаковые сообщения;

По умолчанию использованы только класс ERROR для каналов loaddll, file, dll, reg.

3. Имеется возможность использовать в скрипте свой фильтр.

4. Работает как с дефолтным префиксом (.wine), так и с другими (сделанными Вами).

Работа скрипта

Работа скрипта на примере запуска игры SCP-074 из префикса $HOME/SCP:

Помещаем скрипт WD.sh в папку с игрой (программой) и запускаем

WD.sh

Выбираем свой префикс (в моем случае $HOME/SCP)

wineprefix

Выбираем запускающий игру (программу) файл
program_wine

Выбираем фильтр WINEDEBUG: оставляем по умолчанию, или вписываем свой
default winedebug
own winedebug

После закрытия запущенной в Wine игры (программы), лог ошибок будет записан в файл "Имя_запускаемого_файла.Debug" (находится в папке откуда запущен скрипт).
error winedebug

скрипт WD!.sh

Сам скрипт:
  1. #!/bin/bash
  2. # Author: Airvikar <http://ubuntu-wine.ru>
  3. if ! [ -f /usr/bin/zenity ]
  4.  then
  5.   AHT="Внимание! Для работы скрипта требуется установленный пакет zenity. Можете установить его из \"Центра приложений Ubuntu\" или командой sudo apt-get install zenity."
  6.   echo "Внимание!"
  7.   echo "Для работы скрипта требуется установленный пакет zenity!"
  8.   echo "Можете установить его из \"Центра приложений Ubuntu\""
  9.   echo "или командой sudo apt-get install zenity"
  10.   gnome-terminal -x bash -i -c "echo -en $AHT; sleep 3"
  11.   read
  12.   exit
  13.  else
  14.   echo ""
  15. fi
  16. if [[ ! -f /usr/bin/lsb_release ]] ; then
  17.     zenity --error \
  18.      --text="Не установлена утилита lsb-release!"
  19.     exit 0;
  20. else
  21. echo ""
  22. fi
  23. iWine=`wine --version`
  24. iUb=`lsb_release -d | sed s/Description/ОС/g`
  25. iU=`cat /etc/issue`
  26. iKern=`uname -r`
  27. iCPU=`cat /proc/cpuinfo | grep "model name"`
  28. iRAM=`free -m | grep Mem | awk '{ print $2 }'`
  29. iVGA=`lspci | grep VGA`
  30. iOpenGL=`glxinfo | grep OpenGL`
  31. WP=`zenity --width "500" --height "200"  --list --radiolist \
  32.        --title="Выбор префикса Wine (по умолчанию папка /.wine)" \
  33.        --text="Какой префикс Wine будете использовать?" \
  34.        --column="Отметить" --column="N"  --column="Префикс Wine" --column="Путь" \
  35.        FALSE "1" "Свой префикс" "WINEPREFIX" \
  36.        TRUE "2" "Выбрать установку по умолчанию" "/.wine" \
  37.        --print-column="2"`
  38.        case $? in
  39.         0) echo "" ;;
  40.         1) exit ;;
  41.        -1) exit ;;
  42.       esac
  43. if ! [ $WP = 2 ]; then
  44.    WINEPREF=`zenity --width "600" --height "600" --file-selection \
  45.   --filename=$HOME\/ \
  46.   --directory \
  47.   --title="Выбор Вашего префикса Wine (WINEPREFIX)"`
  48.   case $? in
  49.    0) WINEPREFIX="$WINEPREF" ;;
  50.    *) exit ;;
  51.   esac
  52.  else
  53.  WINEPREFIX="$HOME/.wine"
  54. fi
  55. a=$(readlink -f "$0")
  56. b=`dirname "$a"`
  57. GP=`zenity --file-selection \
  58. --title="Выберите запускающий программу файл (Пример: Game.exe)" \
  59. --filename="$b/" \
  60. --file-filter="All file|*.*" \
  61. --file-filter="Win32|*.bat *.exe *.msi"`
  62. case $? in
  63.         0)
  64.           echo "";;
  65.         1)
  66.           exit;;
  67.        -1)
  68.           exit;;
  69. esac
  70. c=${GP##*/}
  71. e=${c%.exe}
  72. i=${c%.*}
  73. wd=`zenity --width "640" --height "200"  --list --radiolist \
  74.        --title="Выбор фильтра WINEDEBUG" \
  75.        --text="Какой фильтр будете использовать в WINEDEBUG?" \
  76.        --column="Отметить" --column="N"  --column="WINEDEBUG" --column="Фильтр" \
  77.        FALSE "1" "Вписать свой" "WINEDEBUG=fixme-all,..." \
  78.        TRUE "2" "Оставить по умолчанию" "WINEDEBUG=fixme-all,err+loaddll,err+dll,err+file,err+reg" \
  79.        --print-column="2"`
  80.        case $? in
  81.         0) echo "" ;;
  82.         1) exit ;;
  83.        -1) exit ;;
  84.       esac
  85. if ! [ $wd = 2 ]; then
  86.    WINEDEBUG=`zenity --entry --title="Фильтр WINEDEBUG" --text="Введите свой фильтр отладки:" \
  87.   --entry-text="fixme-all,"`
  88.   case $? in
  89.    0) WINEDEBUG="$WINEDEBUG" ;;
  90.    *) exit ;;
  91.   esac
  92.  else
  93.  WINEDEBUG="fixme-all,err+loaddll,err+dll,err+file,err+reg"
  94. fi
  95. > "$c".Debug
  96. echo "------SYSTEM-------" >> "$c".Debug
  97. echo "$iWine" >> "$c".Debug
  98. echo "$iUb" >> "$c".Debug
  99. echo "$iCPU" >> "$c".Debug
  100. echo "RAM = $iRAM" >> "$c".Debug
  101. echo "$iVGA" >> "$c".Debug
  102. echo "$iOpenGL" >> "$c".Debug
  103. echo "------------------------" >> "$c".Debug
  104. echo "" >> "$c".Debug
  105. echo "WINEDEBUG=$WINEDEBUG" >> "$c".Debug
  106. echo "" >> "$c".Debug
  107. echo "------ Program $c ------" >> "$c".Debug
  108. env WINEPREFIX="$WINEPREFIX" WINEDEBUG=$WINEDEBUG wine start /unix "$GP" 2>&1 | sed '/fixme:*/d' | sed '$!N; /^\(.*\)\n\1$/!P; D' >> "$c".Debug
  109. deb_text=$(cat "$c.Debug")
  110. echo "$deb_text" | zenity --text-info --editable \
  111. --width=600 --height=480 \
  112. --title="Вывод ошибок для $c (записан в $c.Debug)"
  113. exit



Источник: http://ubuntu-wine.ru
Категория: Wine на практике | Добавил: Soliton (25.05.2013) | Автор: Airvikar W
Просмотров: 11382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Программы
 
 
 
Статистика
Яндекс.Метрика

Рейтинг@Mail.ru
Мои баннеры
 


Dmoz
Категории раздела
Wine на практике [27]
Ubuntu: Записная книжка [14]
Игры в Ubuntu [11]
Игры установленные в Ubuntu с помощью приложения Wine.

 Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz