From 7d7320f0b7c2b344963fd527385f3cee4c11a21c Mon Sep 17 00:00:00 2001 From: baigao-X <1007668733@qq.com> Date: Sat, 7 Jun 2025 15:01:42 +0800 Subject: [PATCH] feat: generating debug files during linux release builds (#4308) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit linux release构建时生成与MediaServer 匹配的debug文件。 生产环境依然使用小尺寸的MediaServer,在需要gdb调试或者查看coredump文件时可以结合debug文件查看调用栈。 --- CMakeLists.txt | 7 ++++++- server/CMakeLists.txt | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 035f1727..8190bd83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,7 +198,12 @@ if(UNIX) if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(COMPILE_OPTIONS_DEFAULT ${COMPILE_OPTIONS_DEFAULT} "-g3") else() - set(COMPILE_OPTIONS_DEFAULT ${COMPILE_OPTIONS_DEFAULT} "-g0") + find_program(OBJCOPY_FOUND objcopy) + if (OBJCOPY_FOUND) + set(COMPILE_OPTIONS_DEFAULT ${COMPILE_OPTIONS_DEFAULT} "-g3") + else() + set(COMPILE_OPTIONS_DEFAULT ${COMPILE_OPTIONS_DEFAULT} "-g0") + endif() endif() elseif(WIN32) if (MSVC) diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 1e198208..9c907475 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -66,3 +66,23 @@ else() endif() install(TARGETS MediaServer DESTINATION ${INSTALL_PATH_RUNTIME}) + +#relase 类型时额外输出debug调试信息 +string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER) +if(UNIX) + if("${CMAKE_BUILD_TYPE_LOWER}" STREQUAL "release") + find_program(OBJCOPY_FOUND objcopy) + if (OBJCOPY_FOUND) + add_custom_command(TARGET MediaServer + POST_BUILD + COMMAND objcopy --only-keep-debug ${EXECUTABLE_OUTPUT_PATH}/MediaServer ${EXECUTABLE_OUTPUT_PATH}/MediaServer.debug + COMMAND objcopy --strip-all ${EXECUTABLE_OUTPUT_PATH}/MediaServer + COMMAND objcopy --add-gnu-debuglink=${EXECUTABLE_OUTPUT_PATH}/MediaServer.debug ${EXECUTABLE_OUTPUT_PATH}/MediaServer + ) + install(FILES ${EXECUTABLE_OUTPUT_PATH}/MediaServer.debug DESTINATION ${INSTALL_PATH_RUNTIME}) + else() + message(STATUS "not found objcopy, generate MediaServer.debug skip") + endif() + endif() +endif() +