From 659ca2b76f341fd6d76ae925c883e179330cfc47 Mon Sep 17 00:00:00 2001 From: Max <51083570+hmaxnl@users.noreply.github.com> Date: Sun, 26 Jan 2025 00:56:36 +0100 Subject: [PATCH] [CHANGE] Added debug script. Added more compile options. (#1) Merge --- .gitignore | 1 + CMakeLists.txt | 11 +++++++---- script/.gdbinit | 2 ++ script/dbg.gdb | 1 + script/debug_srv.sh | 23 +++++++++++++++++++++++ src/client/main.c | 2 ++ src/net/include/netex.h | 8 ++++---- src/net/netex.c | 2 ++ src/server/CMakeLists.txt | 5 +++++ src/server/server.c | 13 ++++++++----- 10 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 script/.gdbinit create mode 100644 script/dbg.gdb create mode 100644 script/debug_srv.sh diff --git a/.gitignore b/.gitignore index 09c8e05..0fc3af8 100755 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,7 @@ *.mod* *.cmd .tmp_versions/ +.cmake/ modules.order Module.symvers Mkfile.old diff --git a/CMakeLists.txt b/CMakeLists.txt index 05a8870..b5e8579 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,19 +2,22 @@ cmake_minimum_required(VERSION 3.15) project(netex LANGUAGES C) -add_compile_options(-pthread) +add_compile_options(-pthread -Wall -Wextra -Werror -Wshadow -Wfloat-equal -Wpointer-arith -Wpedantic -pedantic-errors + "$<$:-s;-O3;-DNDEBUG>" + "$<$:-O0;-g>" + "$<$:-O2;-g;-DNDEBUG>") -set(PROJ_BUILD_DIR ${CMAKE_BINARY_DIR}) +set(PROJ_BUILD_DIR ${CMAKE_BINARY_DIR}/build) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJ_BUILD_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJ_BUILD_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJ_BUILD_DIR}/bin) -set(PROJ_REL_BUILD_DIR ${CMAKE_BINARY_DIR}/release) +set(PROJ_REL_BUILD_DIR ${PROJ_BUILD_DIR}/release) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJ_REL_BUILD_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${PROJ_REL_BUILD_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJ_REL_BUILD_DIR}/bin) -set(PROJ_DEB_BUILD_DIR ${CMAKE_BINARY_DIR}/debug) +set(PROJ_DEB_BUILD_DIR ${PROJ_BUILD_DIR}/debug) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJ_DEB_BUILD_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${PROJ_DEB_BUILD_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJ_DEB_BUILD_DIR}/bin) diff --git a/script/.gdbinit b/script/.gdbinit new file mode 100644 index 0000000..e950b24 --- /dev/null +++ b/script/.gdbinit @@ -0,0 +1,2 @@ +set debuginfod enabled on +set disassembly intel \ No newline at end of file diff --git a/script/dbg.gdb b/script/dbg.gdb new file mode 100644 index 0000000..3bab667 --- /dev/null +++ b/script/dbg.gdb @@ -0,0 +1 @@ +target remote localhost:2345 \ No newline at end of file diff --git a/script/debug_srv.sh b/script/debug_srv.sh new file mode 100644 index 0000000..5ca0413 --- /dev/null +++ b/script/debug_srv.sh @@ -0,0 +1,23 @@ +#!/bin/bash +RED='\033[0;31m' +GREEN='\033[0;32m' +LIGHT_BLUE='\033[0;94m' +NC='\033[0m' # No Color + +DBG_LOG="[${LIGHT_BLUE}DBG${NC}] " + +DBG_PATH="build/debug/bin/" + +echo -e "${DBG_LOG}Copy dbg files..." +cp ./script/dbg.gdb ${DBG_PATH}/dbg.gdb + +echo -e "${DBG_LOG}Moving to debug location: '${GREEN}${DBG_PATH}${NC}'..." +cd ${DBG_PATH} + +#tmux splitw -h -p 50 "gdbserver :2345 ./netex_svr" +#tmux selectp -t 0 +konsole -e "gdbserver :2345 ./netex_svr" & +gdb -x dbg.gdb +echo -e "${DBG_LOG}Killing ${RED}gdbserver${NC} if running..." +pkill -f "gdbserver" +echo -e "${GREEN}Done!${NC}" diff --git a/src/client/main.c b/src/client/main.c index c29e3d2..ce3d2aa 100755 --- a/src/client/main.c +++ b/src/client/main.c @@ -4,5 +4,7 @@ int main(int argc, char *argv[]) { + (void)argc; + (void)argv; return 0; } \ No newline at end of file diff --git a/src/net/include/netex.h b/src/net/include/netex.h index 1c642ed..c41bf06 100755 --- a/src/net/include/netex.h +++ b/src/net/include/netex.h @@ -4,10 +4,10 @@ #include #include -#define PRINT(msg, args...) printw(msg, ##args); refresh() -#define PRINT_LINE(msg, args...) printw(msg "\n", ##args); refresh() -#define WARN(msg, args...) printw("[Warning]: " msg "\n", ##args); refresh() -#define ERROR(msg, args...) printw("[ERROR]: " msg "\n", ##args); refresh() +#define PRINT(msg, ...) printw(msg, ##__VA_ARGS__); refresh() +#define PRINT_LINE(msg, ...) printw(msg "\n", ##__VA_ARGS__); refresh() +#define WARN(msg, ...) printw("[Warning]: " msg "\n", ##__VA_ARGS__); refresh() +#define ERROR(msg, ...) printw("[ERROR]: " msg "\n", ##__VA_ARGS__); refresh() #define GET_PERC(num, perc) num * perc / 100 diff --git a/src/net/netex.c b/src/net/netex.c index d645df2..9850759 100755 --- a/src/net/netex.c +++ b/src/net/netex.c @@ -195,10 +195,12 @@ void free_host_info(HOST_INFO* host_info) void handle_exit(int c) { + (void)c; netex_shutdown(); exit(OK); } void handle_term_resize(int c) { + (void)c; //TODO: Set parameter for ncurses code to check if window is resized. } \ No newline at end of file diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 46319da..18913d3 100755 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -6,3 +6,8 @@ add_executable(netex_svr target_include_directories(netex_svr PRIVATE ${CMAKE_SOURCE_DIR}/src/net/include) target_link_libraries(netex_svr netex) + +#add_custom_command(TARGET netex_svr POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy +# ${CMAKE_BINARY_DIR}/script/.gdbinit +# ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG}/.gdbinit) diff --git a/src/server/server.c b/src/server/server.c index 1e19bc6..9a9e236 100755 --- a/src/server/server.c +++ b/src/server/server.c @@ -21,10 +21,12 @@ int server_sockfd; struct sockaddr_in server_sockaddr; pthread_t listen_thread; -void server_listen(); +void* server_listen(void* args); int initialize_server(int argc, char* argv[]) { + (void)argc; + (void)argv; // Config srv_configuration = config_load_from_path(CONFIG_PATH); if (srv_configuration == NULL) @@ -62,7 +64,7 @@ int initialize_server(int argc, char* argv[]) int server_execute(void) { - const int thread_create_result = pthread_create(&listen_thread, NULL, (void*)server_listen, NULL); + const int thread_create_result = pthread_create(&listen_thread, NULL, server_listen, NULL); if (thread_create_result != 0) { ERROR("Failed to create main listening thread, pthread error: %i", thread_create_result); @@ -75,8 +77,9 @@ int server_execute(void) return 0; } -void server_listen() +void* server_listen(void* args) { + (void)args; PRINT_LINE("Listening..."); int some_return_code = 0; while (true) @@ -98,8 +101,8 @@ void server_listen() // Test response PRINT_LINE("Accepted clientfd: %i", accepted_fd); const char* header = "HTTP/1.1 200 OK\r\nContent-Length: 14\r\nConnection: close\r\n\r\nHello, world!\n"; - const int header_len = strlen(header); - const int send_result = send(accepted_fd, header, header_len, 0); + const size_t header_len = strlen(header); + const ssize_t send_result = send(accepted_fd, header, header_len, 0); if (send_result == -1) WARN("Error sending message to client!"); close(accepted_fd);