Отладка в VS

administrator

Administrator
Staff member
Apr 11, 2020
80
0
6
On Windows before anything you should check these
- Before debugging or making crashlogs etc. with Visual Studio you must compile the core in "Debug" instead of "Release". You can select this in "Build>Configuration Manager" or at the top of Visual Studio window
- You also need to move the new pdb files generate by compiling in debug mode on Visual Studio from the compile output folder (bin) to your server folder - these files contain information needed for debugging.
- It is assumed that Solution Explorer is open. Open it by selecting "View>Solution Explorer" in Visual Studio
-- You may want to click on the Home icon to reset the view on Solution Explorer
- You can place breakpoints in Visual Studio editor by right clicking a line of code and selecting "Breakpoint>Insert Breakpoint"
- At the top of the window you should see controls for stepping and continuing when you have started to debug.
- Here is a video showing the basic Visual Studio functionality

Fastest way to debug on windows. This is the easiest way to start up debugging a script.
- Start the authserver and worldserver normally
- Open TrinityCore.sln in Visual Studio. This is what you usually open when you want to compile the core
- In Visual Studio at the top select "Debug>Attach to process...>worldserver.exe" and click "Attach"
- You are now debugging



The second slower way of debugging on windows. This is useful for debugging something that occurs in the startup of the server.
- Open TrinityCore.sln in Visual Studio. This is what you usually open when you want to compile the core
- In solution explorer right click on worldserver and select "Set as StartUp Project"
- In solution explorer right click on worldserver and select "Properties"
-- In Properties you should go to "Configuration Properties>Debugging" and edit "Working Directory" to point to the server folder. For me this is the default compile folder so I use "$(OutDir)"
- Start the authserver normally
- Start the worldserver by selecting "Debug>Start Debugging". The server will start with debugging attached from the beginning
- You are now debugging

Crashlogs on windows. Once you have a way to reproduce a crash you can get a crashlog that can help you resolve it.
- After compiling the core in "Debug" instead of "Release" start up the worldserver and authserver
- Reproduce the crash you have
- In the server folder there is now a folder called Crashes that contains txt and dmp files.
- You can open the txt files in text editors
-- At the top of a txt file there is some information about your system and below it there is the Call Stack and below that there are Variables of each part of the call stack
-- The Call Stack will tell you at the top what was the last function call before crashing and what function calls led to that function call.
-- Next to the function names there is the file that the function is defined in and the line number the code was executing in that function.
-- In the Variables section you can inspect variables that were present at each function call.
-- Based on this information you are often able to see what crashed or get a better view of what you need to inspect more in your code.
- The dmp file can be opened in Visual Studio
-- Open TrinityCore.sln in Visual Studio. This is what you usually open when you want to compile the core
-- Drag and drop the dmp file to Visual Studio
-- In the window that opens click to "Debug with Native Only"
-- In the window popup click "Break"
-- You are now in a state like you would have hit a break point in the code or a crash while debugging. You can inspect the call stack and the variables.

Edit and continue on windows. When debugging this allows you to change the code and without restarting the server apply those changes so they actually work ingame.
- Open TrinityCore.sln in Visual Studio. This is what you usually open when you want to compile the core
- In solution explorer right click on worldserver and select "Properties"
-- In Properties select "Configuration Properties>Linker>General" and set "Enable Incremental Linking" to "Yes".
-- In Properties select "Configuration Properties>Linker>Advanced" and set "Image Has Safe Exception Handlers" to "No".
-- In Properties select "Configuration Properties>C/C++>General" and set "Debug Information Format" to "Program Database for Edit And Continue".
- At the top of the window select "Tools>Options". In the Options select "Debugging>General" and in there select "Enable Edit and Continue", "Enable Native Edit and Continue" and "Require source files to exactly match the original version".
- Compile the server for the changes to take effect.
- Set up "The second slower way of debugging" (I did not test edit and continue on other configurations)
- Start the authserver normally
- Start the worldserver by selecting "Debug>Start Debugging".
- Try edit a cpp file a little and save it.
- At top of Visual Studio window select "Debug>Apply Code Changes" and wait until the changes are applied. Warning: it can take considerable amount of time for the changes to be applied.
- If you have issues, be sure to check the error messages in Output. You can view it by selecting "View>Output"
- This guide was written based on https://msdn.microsoft.com/en-us/library/esaeyddf.aspx and https://blogs.msdn.microsoft.com/vcblog/2015/07/22/c-edit-and-continue-in-visual-studio-2015/
 

administrator

Administrator
Staff member
Apr 11, 2020
80
0
6
vs_linker_settings.png

Последнее нужно включить поддержку отладки в линкере. Тут несколько моментов:
- Да, настройка появляется когда выбрана конфигурация release.
- Правой кнопкой на проекте worldserver (1)
- далее находим вкладку linker (2)
- включаем ключ / DEBUG
Вносим исправление в worldserver.conf -> MaxCoreStuckTime = 0.
Все, отладка должна заработать на уровне скриптов C++