Search the Community
Showing results for tags 'linux'.
-
A lot of people have asked how to debug so I made this short guide on how to set up debugging. This guide only tells you how to actually set up debugging in TrinityCore on Windows and Linux. This will not explain the basics of debugging. You can google those or play around with the debugger to learn. Here are a few videos that explain how to actually debug after setting debugging up on visual studio: https://youtu.be/0ebzPwixrJA and linux: https://www.youtube.com/watch?v=sCtY--xRUyI This guide contains multiple guides. Each list of bullet points is it's own guide. Make sure you can run the server normally before trying to debug. Windows: 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 http://i.imgur.com/5oHd59j.png - 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 http://i.imgur.com/hkW6Gk0.png -- You may want to click on the Home icon to reset the view on Solution Explorer http://i.imgur.com/N8UPwDh.png - You can place breakpoints in Visual Studio editor by right clicking a line of code and selecting "Breakpoint>Insert Breakpoint" http://i.imgur.com/L2TxBVG.png - 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 https://www.youtube.com/watch?v=Ijdk4z8-2OI 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" http://i.imgur.com/jDEI2Hq.png - 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" http://i.imgur.com/wvMzeRA.png - In solution explorer right click on worldserver and select "Properties" http://i.imgur.com/rTNEF9O.png -- 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)" http://i.imgur.com/aRI29fB.png - Start the authserver normally - Start the worldserver by selecting "Debug>Start Debugging". The server will start with debugging attached from the beginning http://i.imgur.com/cg1KJNw.png - 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. http://i.imgur.com/9eQIdql.png - You can open the txt files in text editors http://i.imgur.com/EH6R17E.png -- 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" http://i.imgur.com/OgyU2kM.png -- In the window popup click "Break" http://i.imgur.com/4jDzqRn.png -- 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" http://i.imgur.com/rTNEF9O.png -- In Properties select "Configuration Properties>Linker>General" and set "Enable Incremental Linking" to "Yes". http://i.imgur.com/caQqwN5.png -- In Properties select "Configuration Properties>Linker>Advanced" and set "Image Has Safe Exception Handlers" to "No". http://i.imgur.com/FYzN8Ks.png -- In Properties select "Configuration Properties>C/C++>General" and set "Debug Information Format" to "Program Database for Edit And Continue". http://i.imgur.com/pxQ6I8N.png - 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. http://i.imgur.com/77pb58E.png - If you have issues, be sure to check the error messages in Output. You can view it by selecting "View>Output" http://i.imgur.com/4cIznW9.png - 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/ Linux: First we need to compile the server in debug mode. - Compile the server with the cmake flag -DCMAKE_BUILD_TYPE=Debug Debugging on linux. You can debug on linux by using GDB. - Here is a good video about it: https://www.youtube.com/watch?v=sCtY--xRUyI - Basically you -- Start the authserver -- Start the worldserver by using "gdb ./worldserver" -- Enter breakpoints by using break command on gdb -- Use the run command on gdb to start the server -- You are now debugging - You may also be interested in using VScode or some other more visual debuggers. https://www.youtube.com/watch?v=B0xTgyCwsAo Crashlogs on linux. Once you have a way to reproduce a crash you can get a crashlog that can help you resolve it. - Take crashreport.gdb from /contrib/debugger from source folder and place it to your server folder - Start the authserver - Start the worldserver by using "gdb -x crashreport.gdb ./worldserver" - Reproduce your crash - There should be a backtrace.log in your server folder that contains information about the crash like the callstack and variables in each function call in the call stack - This guide was written based on https://github.com/TrinityCore/TrinityCore/blob/master/contrib/debugger/README Running valgrind on linux. This helps you find memory errors like invalid reads and writes and memory leaks. - Here is a good video about it: https://www.youtube.com/watch?v=fvTsFjDuag8 - Basically you -- Start the authserver -- Start the worldserver by using "valgrind ./worldserver" -- Run your code that you want to analyze and close the server -- The console or an output log should contain the valgrind log
- 5 replies
-
- 5
-
- windows
- visual studio
-
(and 6 more)
Tagged with:
-
-- EDIT BY Aokromes -- If you get "unknown column" "missing table" "Duplicate column" errors: use mysql --default-character-set=utf8 to avoid import failures because timeout/mysql gone away/etc 1) Clone desired branch. 2) Import sql/create/create_mysql.sql 3) start core 4) leave core to update databases. Our Wiki: http://collab.kpsn.org/display/tc/TrinityCore+Home
-
So I'm trying to set up a debugging process where I can see what functions are being called when I do certain things in game, that way I can hopefully locate exactly which functions in which cpp files might possibly be involved with the bug I'm trying to fix. Is something like this possible? I can get VS Code to launch my worldserver or attach to the worldserver process but beyond that I'm not getting any other information out of the Call Stack or anything when I make certain actions in-game. Thanks
-
- debugging
- stack trace
-
(and 1 more)
Tagged with:
-
Hello! I read that I can extract DBC/Maps etc on windows and put it on a linux server, after running the Trinity core under windows I would like to do it under Linux (it also make me learn a bit of Linux) But I got this problem and maybe you can help me to solve it (The red border is to show what come from my windows)
-
Hello! I was checking my DB but I didn't find any table that could tell "this is when it will happen" I wonder how it work, I activated it but is there a table to put the unix time? (like to do : every wednesday, at 15:25:30 there will be the distribution) Thanks!
-
Hi guys, i compiled my server under linux and i saw the thing about needing a connection patcher for my client (that needs to be compiled under windows) so i compiled my project on windows too but i can't find the connection patcher, it is nowhere to be seen !
- 2 replies
-
- connection patcher
- 3.3.5
-
(and 1 more)
Tagged with:
-
I am compiling on Linux, trying to make a 1.12 private server on Manjaro Linux. I'm having some issues with Cmake. To run Cmake succesfully, I used the following command, since Cmake found openssl 1.1: cmake .. -DPREFIX=/home/wow/bin -DOPENSSL_LIBRARIES=/usr/lib/libssl.so.1.0.0 -DOPENSSL_INCLUDE_DIR=/usr/include/openssl-1.0/ Configuration worked. After running 'make' I got into trouble. Here's the output of my Terminal: make (....) [ 20%] Linking CXX executable bnetserver CMakeFiles/bnetserver.dir/Main.cpp.o: In function `main::{lambda()#3}::operator()() const': Main.cpp:(.text+0x53d): undefined reference to `SSLeay_version' CMakeFiles/bnetserver.dir/Main.cpp.o: In function `boost::asio::ssl::detail::openssl_init_base::do_init::do_init()': Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initC2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initC5Ev]+0x1c): undefined reference to `SSL_library_init' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initC2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initC5Ev]+0x21): undefined reference to `SSL_load_error_strings' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initC2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initC5Ev]+0x26): undefined reference to `OPENSSL_add_all_algorithms_noconf' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initC2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initC5Ev]+0x2f): undefined reference to `CRYPTO_num_locks' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initC2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initC5Ev]+0xa2): undefined reference to `CRYPTO_set_locking_callback' CMakeFiles/bnetserver.dir/Main.cpp.o: In function `boost::asio::ssl::detail::openssl_init_base::do_init::~do_init()': Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initD2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initD5Ev]+0x12): undefined reference to `CRYPTO_set_locking_callback' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initD2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initD5Ev]+0x17): undefined reference to `ERR_free_strings' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initD2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initD5Ev]+0x1c): undefined reference to `EVP_cleanup' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initD2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initD5Ev]+0x21): undefined reference to `CRYPTO_cleanup_all_ex_data' Main.cpp:(.text._ZN5boost4asio3ssl6detail17openssl_init_base7do_initD2Ev[_ZN5boost4asio3ssl6detail17openssl_init_base7do_initD5Ev]+0x3a): undefined reference to `ENGINE_cleanup' CMakeFiles/bnetserver.dir/Server/SslContext.cpp.o: In function `boost::asio::ssl::context::context(boost::asio::ssl::context_base::method)': SslContext.cpp:(.text._ZN5boost4asio3ssl7contextC2ENS1_12context_base6methodE[_ZN5boost4asio3ssl7contextC5ENS1_12context_base6methodE]+0x1a9): undefined reference to `SSLv23_method' SslContext.cpp:(.text._ZN5boost4asio3ssl7contextC2ENS1_12context_base6methodE[_ZN5boost4asio3ssl7contextC5ENS1_12context_base6methodE]+0x1c5): undefined reference to `SSLv23_client_method' SslContext.cpp:(.text._ZN5boost4asio3ssl7contextC2ENS1_12context_base6methodE[_ZN5boost4asio3ssl7contextC5ENS1_12context_base6methodE]+0x1e1): undefined reference to `SSLv23_server_method' SslContext.cpp:(.text._ZN5boost4asio3ssl7contextC2ENS1_12context_base6methodE[_ZN5boost4asio3ssl7contextC5ENS1_12context_base6methodE]+0x1fd): undefined reference to `SSLv23_method' SslContext.cpp:(.text._ZN5boost4asio3ssl7contextC2ENS1_12context_base6methodE[_ZN5boost4asio3ssl7contextC5ENS1_12context_base6methodE]+0x247): undefined reference to `SSLv23_client_method' SslContext.cpp:(.text._ZN5boost4asio3ssl7contextC2ENS1_12context_base6methodE[_ZN5boost4asio3ssl7contextC5ENS1_12context_base6methodE]+0x28a): undefined reference to `SSLv23_server_method' ../../../dep/gsoap/libgsoap.a(stdsoap2.cpp.o): In function `soap_ssl_init': stdsoap2.cpp:(.text+0x6752): undefined reference to `SSL_library_init' stdsoap2.cpp:(.text+0x6757): undefined reference to `OPENSSL_add_all_algorithms_noconf' stdsoap2.cpp:(.text+0x675c): undefined reference to `SSL_load_error_strings' ../../../dep/gsoap/libgsoap.a(stdsoap2.cpp.o): In function `ssl_auth_init': stdsoap2.cpp:(.text+0x69d7): undefined reference to `SSLv23_method' ../../../dep/gsoap/libgsoap.a(stdsoap2.cpp.o): In function `tcp_connect': stdsoap2.cpp:(.text+0x8ffd): undefined reference to `SSL_state' stdsoap2.cpp:(.text+0x91d0): undefined reference to `sk_pop_free' stdsoap2.cpp:(.text+0x91f9): undefined reference to `sk_num' stdsoap2.cpp:(.text+0x9225): undefined reference to `sk_value' stdsoap2.cpp:(.text+0x92c1): undefined reference to `sk_pop_free' collect2: fout: ld gaf exit-status 1 terug make[2]: *** [src/server/bnetserver/CMakeFiles/bnetserver.dir/build.make:348: src/server/bnetserver/bnetserver] Fout 1 make[1]: *** [CMakeFiles/Makefile2:1256: src/server/bnetserver/CMakeFiles/bnetserver.dir/all] Fout 2 make: *** [Makefile:130: all] Fout 2 I presume I'm having trouble because of OpenSSL and Boost, but I'm not entirely sure. At least I dont know how to solve this problem. Could anyone help me with this problem? Many thanks in advance!
-
I followed the guide on how to install the core on Linux, but while configuring CMake I got this error: netherblood@Nether:~/absolutely-hopeless-server/build$ cmake ../ -DCMAKE_INSTALL_PREFIX=/home/netherblood/server -DCONF_DIR=/home/netherblood/server/etc -DTOOLS=1 -DWITH_WARNINGS=1 -- Detected 64-bit platform -- UNIX: Using default library directory CMake Error at cmake/platform/unix/settings.cmake:14 (configure_file): configure_file attempted to configure a file: /home/netherblood/absolutely-hopeless-server/cmake_uninstall.cmake into a source directory. Call Stack (most recent call first): cmake/macros/CheckPlatform.cmake:13 (include) CMakeLists.txt:58 (include) -- Configuring incomplete, errors occurred! See also "/home/netherblood/absolutely-hopeless-server/CMakeFiles/CMakeOutput.log". netherblood@Nether:~/absolutely-hopeless-server/build$ Attached is the log. CMakeOutput (1).log
-
On my test server, I run a Cron Job that pulls source once a week, rebuilds the servers and restarts the servers. THIS IS FOR LINUX ONLY You do not need root access for this. Simply open a shell and type crontab -e Add the following to the cron tab 00 01 * * 0 /home/trinity/servers/legion/cron/update This will run at 1am every Sunday Save and Exit depending on which editor you choose to use. -------------------------------------------------------------------------- The Following update script is what I use which is placed in /home/trinity/server/cron The files name is update and needs to be set as executable (chmod +x update) cd /home/trinity/TrinityCore git pull origin master (or 6x if you are not using the master branch) cd build make clean cmake ../ -DCMAKE_INSTALL_PREFIX=/home/trinity/server -DTOOLS=0 -DWITH_WARNINGS=1 -DCONF_DIR=/home/trinity/server/etc make make install If you use a manage script to start and stop your servers, I recommend you run the stop command between make and make install This is just a recommendation, so your server is never far from the current revision but as always, keep an eye on IRC and the Github Repositories.
-
I have searched all over the forums and can't find anything that exactly matches this. I can connect fine to the server using my windows client, but when I try to connect using my mac client it immediately bounces back stating "You have been disconnected from the server". I have the correct IP address in the config.wtf (And realmlist in the DB) but still can't connect. I of course can't apply the connection patcher, because the EXE isn't mac compatible. Is there something else I need to do to connect with mac? Here is my connection.log if it helps (NOTE that the ".logon.battle.net" I can't get rid of... there is no where config.wtf that has that). 3/14 13:10:21.966 Login program=WoW platform=Mc64 locale=enUS 3/14 13:10:22.097 Component WoW.Mc64.20886 3/14 13:10:22.097 Component WoW.base.20726 3/14 13:10:22.099 Battle.net is Component Bnet.Mc64.37165 3/14 13:10:22.099 LOGIN: state: LOGIN_STATE_CONNECTING result: LOGIN_OK 3/14 13:10:22.145 Failed to resolve “108.26.241.19”.logon.battle.net 3/14 13:10:22.145 LOGIN: state: LOGIN_STATE_FAILED result: DISCONNECTED 3/14 13:10:22.145 Login program=WoW platform=Mc64 locale=enUS 3/14 13:10:22.145 Component WoW.Mc64.20886 3/14 13:10:22.145 Component WoW.base.20726 3/14 13:10:22.154 Battle.net is Component Bnet.Mc64.37165 3/14 13:10:23.298 Client Disconnect due to reason:8 3/14 13:12:54.053 LOGIN: state: LOGIN_STATE_CONNECTING result: LOGIN_OK 3/14 13:12:54.073 Failed to resolve “192.168.1.130”.logon.battle.net 3/14 13:12:54.151 LOGIN: state: LOGIN_STATE_FAILED result: DISCONNECTED 3/14 13:12:54.151 Login program=WoW platform=Mc64 locale=enUS 3/14 13:12:54.173 Component WoW.Mc64.20886 3/14 13:12:54.173 Component WoW.base.20726 3/14 13:12:54.308 Battle.net is Component Bnet.Mc64.37165 3/14 13:12:54.309 Client Disconnect due to reason:8