ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Интегрированная отладка asi/sf/dll плагинов в игре с помощью Visual Studio (https://forum.antichat.xyz/showthread.php?t=1320320)

FYP 12.02.2018 23:38

прив

Многие ли из вас знают, что с помощью Visual Studio можно отлаживать плагины прямо в игре и что делается это очень просто? Нет, блять, нихуя вы не знаете!

Но я вас научу. Берём студию и проект своего плагина, идём в конфигурацию проекта на страницу "Debugging" (Отладка) и ставим такие параметры:

https://i.imgur.com/gS3Bi5R.png

D:\GTA\SAMP - это путь к игре, если кто не понял.

На странице General (Основные) в параметр Output Directory (Выходная директория) нужно указать путь к игре (если он уже не указан в Linker -> General -> Output File).

Далее, на странице Linker (Компоновщик) -> Debugging (Отладка) меняем параметр Generate Debug Info на "Debug".

Желательно изменить ещё следующие настройки (всё это уже настроено в автоматически создаваемой конфигурации "Debug", но может отсутствовать в готовых проектах или шаблонах):

C/C++ -> Optimization -> Optimization = Disabled

В C/C++ -> Preprocessor -> Preprocessor Definitions добавить _DEBUG;

C/C++ -> Code Generation -> Runtime Library = Multi-threaded debug

Всё, теперь при запуске приложения из студии, путём нажатия этой кнопки

https://forum.antichat.xyz/attachments/27183724/

вы больше не будете видеть похожую ошибку

https://forum.antichat.xyz/attachments/27183724/

вместо этого будет запущена игра с вашим плагином и в режиме отладки.

Ставьте тысячи брейкпоинтов и краштесь на здоровье!

Чтобы проворачивать то же самое в сампе, закиньте __loadsamp.asiв корень игры и в параметр "Command Arguments" с первого скрина впишите эту строку: -loadsamp -c -n FYPs_fan -h 127.0.0.1 -p 7777

iAmerican 13.02.2018 05:17

Для DLL не подойдет.(Для справки остальным)

p.s. За исключением соба

NarutoUA 13.02.2018 12:10

Запускаете игру -> VisualStudio - Debug - Attach to Process - gta_sa.exe. В ида про есть отладчик с псевдокодом (правда энивей надо с дебаг инфой билдить для профита, но можно и самп так дебагать). Еще есть полезная хреновина в студии - Edit and Continue, позволяет редачить код без рекомпила.

https://forum.antichat.xyz/attachments/27183784/

Пиздек, не делайте так, юзайте дебаг конфигурацию

iAmerican 13.02.2018 12:21

Цитата:

Сообщение от NarutoUA

Запускаете игру -> VisualStudio - Debug - Attach to Process - gta_sa.exe. В ида про есть отладчик с псевдокодом (правда энивей надо с дебаг инфой билдить для профита, но можно и самп так дебагать). Еще есть полезная хреновина в студии - Edit and Continue, позволяет редачить код без рекомпила.

Пиздек, не делайте так, юзайте дебаг конфигурацию

Edit Continue

Вариант тоже неплохой на самом деле , только нужна база данных для модуля

FYP 13.02.2018 12:32

Цитата:

Сообщение от iAmerican

Для DLL не подойдет.(Для справки остальным)
p.s. За исключением соба

ну переименовать .dll в .asi и все дела, а ещё некоторые лоадеры грузят и длл из своей папки

Цитата:

Сообщение от NarutoUA

Запускаете игру -> VisualStudio - Debug - Attach to Process - gta_sa.exe

это менее удобно и если игру крашит через доли секунды после запуска, не успеешь прицепить отладчик

Цитата:

Сообщение от NarutoUA

Пиздек, не делайте так, юзайте дебаг конфигурацию

это да, в проекте просто не было дебаг конфигурации

NarutoUA 13.02.2018 12:39

Цитата:

Сообщение от FYP

это менее удобно и если игру крашит через доли секунды после запуска, не успеешь прицепить отладчик

Хз, дебагаю ресамп таким образом, ниче не крашило

FYP 13.02.2018 12:51

Цитата:

Сообщение от NarutoUA

Хз, дебагаю ресамп таким образом, ниче не крашило

ты не понял. если твой плагин (ресамп) крашит игру сразу же при запуске, ты не успеешь прицепить отладчик, для этого придётся добавлять какой-нибудь MessageBox в сам плагин, который бы паузил процесс до нажатия "ОК". это же касается и использования брейкпоинтов на раннем этапе загрузки.

да, твой вариант рабочий и его можно юзать, но зачем, когда есть вариант получше?

NarutoUA 13.02.2018 12:53

Цитата:

Сообщение от FYP

ты не понял. если твой плагин (ресамп) крашит игру сразу же при запуске, ты не успеешь прицепить отладчик, для этого придётся добавлять какой-нибудь MessageBox в сам плагин, который бы паузил процесс до нажатия "ОК". это же касается и использования брейкпоинтов на раннем этапе загрузки.
да, твой вариант рабочий и его можно юзать, но зачем, когда есть вариант получше?

Если твой плагин не запускает игру в окне то тогда ничем

FYP 13.02.2018 13:00

Цитата:

Сообщение от NarutoUA

то тогда ничем

что ничем?

зачем моему плагину запускать игру в окне, когда для этого есть другие плагины или собейт и они с этим хорошо справляются? окно игры создаётся не моментально после старта

NarutoUA 13.02.2018 13:13

Цитата:

Сообщение от FYP

что ничем?
зачем моему плагину запускать игру в окне, когда для этого есть другие плагины или собейт и они с этим хорошо справляются? окно игры создаётся не моментально после старта

Ну в этом и преимущество аттача что игру можно перед этим запускать как хочешь.


Время: 23:54