Pull to refresh

Comments 21

В новой(2013) Visual Studio MS утверждали, что сильно улучшили диагностику графики. И те возможности RenderDoc, которые вы описали в этой статье, там появились. Сам не пробовал, но судя по презентации — в том числе отладка сторонних приложений. Впрочем, на счет дочерних процессов и корректной обработки ланчеров ничего не знаю, как и на счет реального удобства отладки сторонних приложений.
Студия — отличный инструмент для разработки и отладки своего DirectX-кода, если у вас есть код — ничего кроме VS 2013 и не надо. А вот как отлаживать чужие программы — я так и не понял. Если кто-то может показать\рассказать как отладить хоть что-нибудь без кода и pdb-файлов — буду очень благодарен.
В студии очень просто работать с Graphics Debugger'ом. Создаем пустой native проект (С++), или открываем абсолютно любой существующий. В настройках проекта, в разделе Debugging в поле Command вписываем полный путь к исследуемому exe. По необходимости также заполняем поля Command Arguments и Working Directory. Закрываем настройки. Графический дебаггинг запускаем в меню Debug->Graphics->Start Diagnostics. Никаких PDB и «своего DirectX-кода» при этом не надо. Возможность дебагать child процессы была в PIX. Я когда игры реверсил постоянно ею пользовался. Сейчас в студийном дебаггере такой возможности найти не могу, возможно ее и нету. Зато в NSight есть. В настройках проекта надо поставить галочку «Application is a launcher». После запуска появится список child процессов среди которых надо выбрать нужный. Я не буду сравнивать различные дебаггеры (хотя бы потому что не работал с RenderDoc). Мне с лихвой хватало возможностей PIX/Visual Studio Graphics Debugger, PerfHUD/NSight, GPA, но весь тот функционал, что описан в статье есть во всех этих утилитах. Могу лишь только сказать, что все тезисы в разделе «Но:» кроме «PIX — уже устарел, не развивается и не работает на последних ОС» не соответсвуют действительности.
Вообще не надо никаких проектов создавать, просто открываем *.exe-шник ;)
Век живи, век учись. Все оказалось еще проще. Спасибо.
Могу лишь только сказать, что все тезисы в разделе «Но:» кроме «PIX — уже устарел, не развивается и не работает на последних ОС» не соответсвуют действительности.

Забьёмся на что-нибудь, что ни PIX'ом, ни студией Вы не разберёте отрисовку кадра интерфейса Хрома так, как показано в статье с использованием RenderDoc? PIX тупо валит Хром на коннекте к дочернему процессу, а Студия просто не умеет.
Никаких проблем.
Project -> Open solution
открываем *.exe файл (дада, именно экзешник который будем отлаживать, как не покажется это странным)
Далее в меню Debug->Graphics->Run diagnostic.
Собственно все.
Не решает проблему лаунчеров\дочерних процессов.
Но в статье черным по белому:
Visual Studio — заточена именно под разработку своего софта, а не анализ чужого
И комментарием выше вы говорите:
Студия — отличный инструмент для разработки и отладки своего DirectX-кода, если у вас есть код — ничего кроме VS 2013 и не надо. А вот как отлаживать чужие программы — я так и не понял. Если кто-то может показать\рассказать как отладить хоть что-нибудь без кода и pdb-файлов — буду очень благодарен.
Но вот последний ваш коммент на благодарность ну никак не похож. :)
Потому что до «открыть студией экзешник и нажать Run diagnostic» я и сам додумался, вот только это не помогает ни разу для того же Хрома. Хотелось узнать что-то новое.
А вот как отлаживать чужие программы и как отладить хоть что-нибудь без кода и pdb-файлов != Отладка дочерних процессов
Да, неверно выразился.
Классно, а для OpenGL что-нибудь такое есть?
Я попробовал RenderDoc — мне кажется, GPA сейчас удобнее. Во-первых, нормально показывает меши. Но самое главное — умеет аттачиться к процессу, запускаемому откуда-то еще. Когда редактор и игра живут в разных процессах и хочется подебажить рендер в редакторе — особенно удобно. Ну и как маленький бонус — каунтеры для интеловских железок.

Еще с Интелом охуенно работать — посылаешь им frame capture, на котором что-то не работает — в ответку получаешь оперативно внутренний билд с фиксом.
А что значит «нормально показывает меши»? RenderDoc тоже показывает, и в таблицах и графически.
image
ок, был не прав, значит
А как рендердок работает с компут шейдерами, тесселяцией, hdr-текстурами и depth-buffer'ами?
Компут шейдеры есть на вкладке пайплайна (хотя им там и не место)…
На счёт тесселяции — можно посмотреть вход и выход hull-шейдеров и domain-шейдеров, и на этом всё. Отлаживать их пока нельзя.
hdr-текстуры и depth-буффера в документации упоминались как поддерживаемые, но сам я не пробовал.
RenderDoc — достойная замена PIX. Но им пользуюсь только для дебага шейдеров, все остальное делаю в Intel GPA для профайлинга Stage3D приложений(Flash). Два года назад писал про Intel GPA для флешеров, может кому будет интересно.
Спасибо за статью! С интересом слежу за развитием RenderDoc.
Sign up to leave a comment.