mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-18 09:50:38 +08:00
remove backward-cpp
This commit is contained in:
parent
888e6934a3
commit
7151fb2e4c
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -19,9 +19,6 @@
|
|||||||
[submodule "3rdparty/uvw"]
|
[submodule "3rdparty/uvw"]
|
||||||
path = 3rdparty/uvw
|
path = 3rdparty/uvw
|
||||||
url = https://github.com/skypjack/uvw.git
|
url = https://github.com/skypjack/uvw.git
|
||||||
[submodule "3rdparty/backward-cpp"]
|
|
||||||
path = 3rdparty/backward-cpp
|
|
||||||
url = https://github.com/Qv2ray/backward-cpp
|
|
||||||
[submodule "cmake/android"]
|
[submodule "cmake/android"]
|
||||||
path = cmake/android
|
path = cmake/android
|
||||||
url = https://github.com/LaurentGomila/qt-android-cmake
|
url = https://github.com/LaurentGomila/qt-android-cmake
|
||||||
|
1
3rdparty/backward-cpp
vendored
1
3rdparty/backward-cpp
vendored
@ -1 +0,0 @@
|
|||||||
Subproject commit 42c350d16545a2fb89ba2fea815b9bbf69de66d8
|
|
@ -402,13 +402,6 @@ set(QV2RAY_FULL_SOURCES
|
|||||||
QVLOG(QV2RAY_QM_FILES)
|
QVLOG(QV2RAY_QM_FILES)
|
||||||
QVLOG(QV2RAY_QRC_RESOURCES)
|
QVLOG(QV2RAY_QRC_RESOURCES)
|
||||||
|
|
||||||
if(NOT ANDROID AND NOT DEFINED DISABLE_BACKWARD_CPP)
|
|
||||||
include(cmake/backward-cpp.cmake)
|
|
||||||
add_definitions(-DQV2RAY_HAS_BACKWARD)
|
|
||||||
target_link_libraries(qv2ray_baselib Backward::Backward)
|
|
||||||
add_backward(qv2ray_baselib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(QV2RAY_QT6)
|
if(QV2RAY_QT6)
|
||||||
qt6_add_executable(qv2ray ${GUI_TYPE} ${QV2RAY_FULL_SOURCES})
|
qt6_add_executable(qv2ray ${GUI_TYPE} ${QV2RAY_FULL_SOURCES})
|
||||||
# For Qt5, Android
|
# For Qt5, Android
|
||||||
|
@ -1,206 +0,0 @@
|
|||||||
#
|
|
||||||
# BackwardMacros.cmake
|
|
||||||
# Copyright 2013 Google Inc. All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# OPTIONS
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
set(STACK_WALKING_UNWIND TRUE CACHE BOOL
|
|
||||||
"Use compiler's unwind API")
|
|
||||||
set(STACK_WALKING_BACKTRACE FALSE CACHE BOOL
|
|
||||||
"Use backtrace from (e)glibc for stack walking")
|
|
||||||
|
|
||||||
set(STACK_DETAILS_AUTO_DETECT TRUE CACHE BOOL
|
|
||||||
"Auto detect backward's stack details dependencies")
|
|
||||||
|
|
||||||
set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE CACHE BOOL
|
|
||||||
"Use backtrace from (e)glibc for symbols resolution")
|
|
||||||
set(STACK_DETAILS_DW FALSE CACHE BOOL
|
|
||||||
"Use libdw to read debug info")
|
|
||||||
set(STACK_DETAILS_BFD FALSE CACHE BOOL
|
|
||||||
"Use libbfd to read debug info")
|
|
||||||
set(STACK_DETAILS_DWARF FALSE CACHE BOOL
|
|
||||||
"Use libdwarf/libelf to read debug info")
|
|
||||||
|
|
||||||
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND NOT DEFINED BACKWARD_TESTS)
|
|
||||||
# If this is a top level CMake project, we most lixely want the tests
|
|
||||||
set(BACKWARD_TESTS ON CACHE BOOL "Enable tests")
|
|
||||||
else()
|
|
||||||
set(BACKWARD_TESTS OFF CACHE BOOL "Enable tests")
|
|
||||||
endif()
|
|
||||||
###############################################################################
|
|
||||||
# CONFIGS
|
|
||||||
###############################################################################
|
|
||||||
if (${STACK_DETAILS_AUTO_DETECT})
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
# find libdw
|
|
||||||
find_path(LIBDW_INCLUDE_DIR NAMES "elfutils/libdw.h" "elfutils/libdwfl.h")
|
|
||||||
find_library(LIBDW_LIBRARY dw)
|
|
||||||
set(LIBDW_INCLUDE_DIRS ${LIBDW_INCLUDE_DIR} )
|
|
||||||
set(LIBDW_LIBRARIES ${LIBDW_LIBRARY} )
|
|
||||||
find_package_handle_standard_args(libdw DEFAULT_MSG
|
|
||||||
LIBDW_LIBRARY LIBDW_INCLUDE_DIR)
|
|
||||||
mark_as_advanced(LIBDW_INCLUDE_DIR LIBDW_LIBRARY)
|
|
||||||
|
|
||||||
# find libbfd
|
|
||||||
find_path(LIBBFD_INCLUDE_DIR NAMES "bfd.h")
|
|
||||||
find_path(LIBDL_INCLUDE_DIR NAMES "dlfcn.h")
|
|
||||||
find_library(LIBBFD_LIBRARY bfd)
|
|
||||||
find_library(LIBDL_LIBRARY dl)
|
|
||||||
set(LIBBFD_INCLUDE_DIRS ${LIBBFD_INCLUDE_DIR} ${LIBDL_INCLUDE_DIR})
|
|
||||||
set(LIBBFD_LIBRARIES ${LIBBFD_LIBRARY} ${LIBDL_LIBRARY})
|
|
||||||
find_package_handle_standard_args(libbfd DEFAULT_MSG
|
|
||||||
LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR
|
|
||||||
LIBDL_LIBRARY LIBDL_INCLUDE_DIR)
|
|
||||||
mark_as_advanced(LIBBFD_INCLUDE_DIR LIBBFD_LIBRARY
|
|
||||||
LIBDL_INCLUDE_DIR LIBDL_LIBRARY)
|
|
||||||
|
|
||||||
# find libdwarf
|
|
||||||
find_path(LIBDWARF_INCLUDE_DIR NAMES "libdwarf.h" PATH_SUFFIXES libdwarf)
|
|
||||||
find_path(LIBELF_INCLUDE_DIR NAMES "libelf.h")
|
|
||||||
find_path(LIBDL_INCLUDE_DIR NAMES "dlfcn.h")
|
|
||||||
find_library(LIBDWARF_LIBRARY dwarf)
|
|
||||||
find_library(LIBELF_LIBRARY elf)
|
|
||||||
find_library(LIBDL_LIBRARY dl)
|
|
||||||
set(LIBDWARF_INCLUDE_DIRS ${LIBDWARF_INCLUDE_DIR} ${LIBELF_INCLUDE_DIR} ${LIBDL_INCLUDE_DIR})
|
|
||||||
set(LIBDWARF_LIBRARIES ${LIBDWARF_LIBRARY} ${LIBELF_LIBRARY} ${LIBDL_LIBRARY})
|
|
||||||
find_package_handle_standard_args(libdwarf DEFAULT_MSG
|
|
||||||
LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR
|
|
||||||
LIBELF_LIBRARY LIBELF_INCLUDE_DIR
|
|
||||||
LIBDL_LIBRARY LIBDL_INCLUDE_DIR)
|
|
||||||
mark_as_advanced(LIBDWARF_INCLUDE_DIR LIBDWARF_LIBRARY
|
|
||||||
LIBELF_INCLUDE_DIR LIBELF_LIBRARY
|
|
||||||
LIBDL_INCLUDE_DIR LIBDL_LIBRARY)
|
|
||||||
|
|
||||||
if (LIBDW_FOUND)
|
|
||||||
LIST(APPEND _BACKWARD_INCLUDE_DIRS ${LIBDW_INCLUDE_DIRS})
|
|
||||||
LIST(APPEND _BACKWARD_LIBRARIES ${LIBDW_LIBRARIES})
|
|
||||||
set(STACK_DETAILS_DW TRUE)
|
|
||||||
set(STACK_DETAILS_BFD FALSE)
|
|
||||||
set(STACK_DETAILS_DWARF FALSE)
|
|
||||||
set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE)
|
|
||||||
elseif(LIBBFD_FOUND)
|
|
||||||
LIST(APPEND _BACKWARD_INCLUDE_DIRS ${LIBBFD_INCLUDE_DIRS})
|
|
||||||
LIST(APPEND _BACKWARD_LIBRARIES ${LIBBFD_LIBRARIES})
|
|
||||||
|
|
||||||
# If we attempt to link against static bfd, make sure to link its dependencies, too
|
|
||||||
get_filename_component(bfd_lib_ext "${LIBBFD_LIBRARY}" EXT)
|
|
||||||
if (bfd_lib_ext STREQUAL "${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
list(APPEND _BACKWARD_LIBRARIES iberty z)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(STACK_DETAILS_DW FALSE)
|
|
||||||
set(STACK_DETAILS_BFD TRUE)
|
|
||||||
set(STACK_DETAILS_DWARF FALSE)
|
|
||||||
set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE)
|
|
||||||
elseif(LIBDWARF_FOUND)
|
|
||||||
LIST(APPEND _BACKWARD_INCLUDE_DIRS ${LIBDWARF_INCLUDE_DIRS})
|
|
||||||
LIST(APPEND _BACKWARD_LIBRARIES ${LIBDWARF_LIBRARIES})
|
|
||||||
|
|
||||||
set(STACK_DETAILS_DW FALSE)
|
|
||||||
set(STACK_DETAILS_BFD FALSE)
|
|
||||||
set(STACK_DETAILS_DWARF TRUE)
|
|
||||||
set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE)
|
|
||||||
else()
|
|
||||||
set(STACK_DETAILS_DW FALSE)
|
|
||||||
set(STACK_DETAILS_BFD FALSE)
|
|
||||||
set(STACK_DETAILS_DWARF FALSE)
|
|
||||||
set(STACK_DETAILS_BACKTRACE_SYMBOL TRUE)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if (STACK_DETAILS_DW)
|
|
||||||
LIST(APPEND _BACKWARD_LIBRARIES dw)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (STACK_DETAILS_BFD)
|
|
||||||
LIST(APPEND _BACKWARD_LIBRARIES bfd dl)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (STACK_DETAILS_DWARF)
|
|
||||||
LIST(APPEND _BACKWARD_LIBRARIES dwarf elf)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
macro(map_definitions var_prefix define_prefix)
|
|
||||||
foreach(def ${ARGN})
|
|
||||||
if (${${var_prefix}${def}})
|
|
||||||
LIST(APPEND _BACKWARD_DEFINITIONS "${define_prefix}${def}=1")
|
|
||||||
else()
|
|
||||||
LIST(APPEND _BACKWARD_DEFINITIONS "${define_prefix}${def}=0")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
if (NOT _BACKWARD_DEFINITIONS)
|
|
||||||
map_definitions("STACK_WALKING_" "BACKWARD_HAS_" UNWIND BACKTRACE)
|
|
||||||
map_definitions("STACK_DETAILS_" "BACKWARD_HAS_" BACKTRACE_SYMBOL DW BFD DWARF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(BACKWARD_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
|
||||||
|
|
||||||
set(BACKWARD_HAS_EXTERNAL_LIBRARIES FALSE)
|
|
||||||
set(FIND_PACKAGE_REQUIRED_VARS BACKWARD_INCLUDE_DIR)
|
|
||||||
if(DEFINED _BACKWARD_LIBRARIES)
|
|
||||||
set(BACKWARD_HAS_EXTERNAL_LIBRARIES TRUE)
|
|
||||||
list(APPEND FIND_PACKAGE_REQUIRED_VARS _BACKWARD_LIBRARIES)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(Backward
|
|
||||||
REQUIRED_VARS ${FIND_PACKAGE_REQUIRED_VARS}
|
|
||||||
)
|
|
||||||
list(APPEND _BACKWARD_INCLUDE_DIRS ${BACKWARD_INCLUDE_DIR})
|
|
||||||
|
|
||||||
macro(add_backward target)
|
|
||||||
target_include_directories(${target} PRIVATE ${BACKWARD_INCLUDE_DIRS})
|
|
||||||
set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS ${BACKWARD_DEFINITIONS})
|
|
||||||
set_property(TARGET ${target} APPEND PROPERTY LINK_LIBRARIES ${BACKWARD_LIBRARIES})
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
set(BACKWARD_INCLUDE_DIRS ${_BACKWARD_INCLUDE_DIRS} CACHE INTERNAL "_BACKWARD_INCLUDE_DIRS")
|
|
||||||
set(BACKWARD_DEFINITIONS ${_BACKWARD_DEFINITIONS} CACHE INTERNAL "BACKWARD_DEFINITIONS")
|
|
||||||
set(BACKWARD_LIBRARIES ${_BACKWARD_LIBRARIES} CACHE INTERNAL "BACKWARD_LIBRARIES")
|
|
||||||
mark_as_advanced(BACKWARD_INCLUDE_DIRS BACKWARD_DEFINITIONS BACKWARD_LIBRARIES)
|
|
||||||
|
|
||||||
# Expand each definition in BACKWARD_DEFINITIONS to its own cmake var and export
|
|
||||||
# to outer scope
|
|
||||||
foreach(var ${BACKWARD_DEFINITIONS})
|
|
||||||
string(REPLACE "=" ";" var_as_list ${var})
|
|
||||||
list(GET var_as_list 0 var_name)
|
|
||||||
list(GET var_as_list 1 var_value)
|
|
||||||
set(${var_name} ${var_value})
|
|
||||||
mark_as_advanced(${var_name})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if (NOT TARGET Backward::Backward)
|
|
||||||
add_library(Backward::Backward INTERFACE IMPORTED)
|
|
||||||
set_target_properties(Backward::Backward PROPERTIES
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${BACKWARD_INCLUDE_DIRS}"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "${BACKWARD_DEFINITIONS}"
|
|
||||||
)
|
|
||||||
if(BACKWARD_HAS_EXTERNAL_LIBRARIES)
|
|
||||||
set_target_properties(Backward::Backward PROPERTIES
|
|
||||||
INTERFACE_LINK_LIBRARIES "${BACKWARD_LIBRARIES}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
@ -1 +1 @@
|
|||||||
6152
|
6153
|
||||||
|
33
src/main.cpp
33
src/main.cpp
@ -1,12 +1,5 @@
|
|||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
|
||||||
// Backtrace Handler
|
|
||||||
#ifndef Q_OS_WIN
|
|
||||||
#ifdef QV2RAY_HAS_BACKWARD
|
|
||||||
#include "3rdparty/backward-cpp/backward.hpp"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef QV2RAY_CLI
|
#ifdef QV2RAY_CLI
|
||||||
#include "ui/cli/Qv2rayCliApplication.hpp"
|
#include "ui/cli/Qv2rayCliApplication.hpp"
|
||||||
#endif
|
#endif
|
||||||
@ -59,31 +52,7 @@ const QString SayLastWords() noexcept
|
|||||||
msg << "------- BEGIN QV2RAY CRASH REPORT -------";
|
msg << "------- BEGIN QV2RAY CRASH REPORT -------";
|
||||||
|
|
||||||
{
|
{
|
||||||
#ifndef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
#ifdef QV2RAY_HAS_BACKWARD
|
|
||||||
const static QString SourceFormat = " ---> %1:[%2:%3]";
|
|
||||||
backward::StackTrace st;
|
|
||||||
backward::TraceResolver resolver;
|
|
||||||
st.load_here(64);
|
|
||||||
resolver.load_stacktrace(st);
|
|
||||||
//
|
|
||||||
for (size_t i = 0; i < st.size(); i++)
|
|
||||||
{
|
|
||||||
const auto &trace = resolver.resolve(st[i]);
|
|
||||||
msg << QString("#%1: %2").arg(i).arg(trace.object_function.c_str());
|
|
||||||
if (!trace.source.filename.empty())
|
|
||||||
{
|
|
||||||
msg << SourceFormat.arg(trace.source.filename.c_str()).arg(trace.source.line).arg(trace.source.col);
|
|
||||||
}
|
|
||||||
for (const auto &sourceX : trace.inliners)
|
|
||||||
{
|
|
||||||
auto newLine = QString(" ---> [FUNC:%1] ").arg(sourceX.function.c_str());
|
|
||||||
newLine += " " + SourceFormat.arg(sourceX.filename.c_str()).arg(sourceX.line).arg(sourceX.col);
|
|
||||||
msg << newLine;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
void *stack[1024];
|
void *stack[1024];
|
||||||
HANDLE process = GetCurrentProcess();
|
HANDLE process = GetCurrentProcess();
|
||||||
SymInitialize(process, NULL, TRUE);
|
SymInitialize(process, NULL, TRUE);
|
||||||
|
Loading…
Reference in New Issue
Block a user