Profiling — различия между версиями
(не показано 11 промежуточных версии 3 участников) | |||
Строка 1: | Строка 1: | ||
− | + | [[Category:Разработка]] | |
== Профилирование == | == Профилирование == | ||
+ | Valgrind хорошо известен как мощное средство поиска ошибок работы с памятью. Но кроме этого, в его составе имеется некоторое количество дополнительных утилит, предназначенных для профилирования программ, анализа потребления памяти и поиска ошибок связанных с синхронизацией в многопоточных программах. | ||
+ | |||
+ | Более подробно читать тут: http://alexott.net/ru/writings/prog-checking/Valgrind.html | ||
Существуют средства, позволяющие получить подробную и наглядную информацию об узких местах программы. | Существуют средства, позволяющие получить подробную и наглядную информацию об узких местах программы. | ||
Для того, чтобы получить полноценную информация, нужно выполнить следующие действия: | Для того, чтобы получить полноценную информация, нужно выполнить следующие действия: | ||
− | |||
* устанавливаем пакет glibc-core-debug (если хотим получить информацию и по функциям glibc) | * устанавливаем пакет glibc-core-debug (если хотим получить информацию и по функциям glibc) | ||
Строка 13: | Строка 15: | ||
$ LD_LIBRARY_PATH=/usr/lib/debug valgrind --trace-children=yes --tool=callgrind ~/Projects/WINE/eterhack/loader/wine-glibc notepad | $ LD_LIBRARY_PATH=/usr/lib/debug valgrind --trace-children=yes --tool=callgrind ~/Projects/WINE/eterhack/loader/wine-glibc notepad | ||
+ | Для просмотра информации получившийся файл callgrind.out. | ||
− | + | * копируем в каталог с исходниками wine и запускаем KCacheGrind: | |
− | $ kcachegrind callgrind.out. | + | $ kcachegrind callgrind.out. |
− | Чтобы видеть исходный код glibc, нужно установить пакет glibc-core-debuginfo. | + | *Чтобы видеть исходный код glibc, нужно установить пакет glibc-core-debuginfo. |
В крайнем случае распаковать glibc: | В крайнем случае распаковать glibc: | ||
Строка 28: | Строка 31: | ||
и указать в программе Settings->Configure путь к RPM/BUILD/glibc-*</pre> | и указать в программе Settings->Configure путь к RPM/BUILD/glibc-*</pre> | ||
− | + | == На сборочном сервере Etersoft == | |
Для простоты код запуска wine под valgrind помещён в скрипт ww-valgrind, так что можно запустить просто | Для простоты код запуска wine под valgrind помещён в скрипт ww-valgrind, так что можно запустить просто | ||
Строка 34: | Строка 37: | ||
$ ww-valgrind notepad | $ ww-valgrind notepad | ||
+ | == Запуск с wine приложениями == | ||
+ | |||
+ | С запуском 1С. Перейти в папку где лежит exe файл для запуска 1с (Например: ~/wine_c/Program Files/1Cv77/BIN) | ||
+ | Выполнить команду: | ||
+ | |||
+ | $ valgrind --leak-check=yes -v wine 1cv7l.exe | ||
+ | |||
+ | == Для OpenSUSE == | ||
+ | |||
+ | Ставим все 4 следующих пакета | ||
+ | |||
+ | $ epmi valgrind valgrind-debuginfo valgrind-debugsource valgrind-devel | ||
+ | |||
+ | И далее по инструкции. | ||
+ | |||
+ | Пример: | ||
− | + | $ valgrind --leak-check=yes -v notepad | |
+ | {{Wine}} |
Текущая версия на 18:14, 28 ноября 2015
Содержание
[убрать]Профилирование
Valgrind хорошо известен как мощное средство поиска ошибок работы с памятью. Но кроме этого, в его составе имеется некоторое количество дополнительных утилит, предназначенных для профилирования программ, анализа потребления памяти и поиска ошибок связанных с синхронизацией в многопоточных программах.
Более подробно читать тут: http://alexott.net/ru/writings/prog-checking/Valgrind.html
Существуют средства, позволяющие получить подробную и наглядную информацию об узких местах программы.
Для того, чтобы получить полноценную информация, нужно выполнить следующие действия:
- устанавливаем пакет glibc-core-debug (если хотим получить информацию и по функциям glibc)
- запускаем программу (на примере notepad) командой
$ LD_LIBRARY_PATH=/usr/lib/debug valgrind --trace-children=yes --tool=callgrind ~/Projects/WINE/eterhack/loader/wine-glibc notepad
Для просмотра информации получившийся файл callgrind.out.
- копируем в каталог с исходниками wine и запускаем KCacheGrind:
$ kcachegrind callgrind.out.
- Чтобы видеть исходный код glibc, нужно установить пакет glibc-core-debuginfo.
В крайнем случае распаковать glibc:
rpmgp glibc cd RPM/SPECS rpm -bp glibc.spec
и указать в программе Settings->Configure путь к RPM/BUILD/glibc-*</pre>
На сборочном сервере Etersoft
Для простоты код запуска wine под valgrind помещён в скрипт ww-valgrind, так что можно запустить просто
$ ww-valgrind notepad
Запуск с wine приложениями
С запуском 1С. Перейти в папку где лежит exe файл для запуска 1с (Например: ~/wine_c/Program Files/1Cv77/BIN) Выполнить команду:
$ valgrind --leak-check=yes -v wine 1cv7l.exe
Для OpenSUSE
Ставим все 4 следующих пакета
$ epmi valgrind valgrind-debuginfo valgrind-debugsource valgrind-devel
И далее по инструкции.
Пример:
$ valgrind --leak-check=yes -v notepad