如何为 Qt 应用程序构建 crashpad
How to build crashpad for Qt application
我正在开发 Qt 应用程序,我想使用 crashpad 来报告崩溃。我已经下载了源代码并构建了它们。
现在我想 link 将那些静态地添加到我的应用程序中。
当我转到 out 文件夹时,我看到很多 .a 文件。我应该选择哪一个?
> find ./out -name *.a
./obj/handler/libhandler.a
./obj/snapshot/libsnapshot.a
./obj/snapshot/libtest_support.a
./obj/test/libtest.a
./obj/test/libgtest_main.a
./obj/test/libgmock_main.a
./obj/util/libutil.a
./obj/third_party/mini_chromium/mini_chromium/base/libbase.a
./obj/third_party/gtest/libgtest_main.a
./obj/third_party/gtest/libgtest.a
./obj/third_party/gtest/libgmock.a
./obj/third_party/gtest/libgmock_main.a
./obj/minidump/libminidump.a
./obj/minidump/libtest_support.a
./obj/client/libclient.a
我也使用这个命令构建了它:
build/gyp_crashpad.py -Dmac_deployment_target=10.12
不知道要不要加一些参数
有人可以帮忙吗?
提前致谢
也许可以在您的代码中输入:
sys._excepthook = sys.excepthook
def my_exception_hook(exctype, value, traceback):
# Print the error and traceback
print(exctype, value, traceback)
# Call the normal Exception hook after
sys._excepthook(exctype, value, traceback)
sys.exit(1)
# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook
此外,导入系统。此代码打印错误并报告它。
通过 gn
和 ninja
构建 Crashpad,其中 gn
生成构建配置,ninja
进行实际构建。
要使 macOS Qt 应用程序生成小型转储并将它们上传到远程服务器,需要将其链接到 Crashpad 库 libcommon.a
、libclient.a
、libutil.a
、libbase.a
, mig_output.a
:
# Crashpad libraries
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lcommon
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lclient
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lbase
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lutil
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lmig_output
该应用程序还需要与系统库 bsm
以及框架 AppKit
和 Security
:
链接
# System libraries
LIBS += -L/usr/lib/ -lbsm
LIBS += -framework AppKit
LIBS += -framework Security
此外,您需要将 crashpad_handler
与您的应用程序打包在一起,并确保它在运行时可用。
可以找到有关构建 Crashpad 的更多信息 here。
可以找到与 Crashpad 集成的示例 macOS Qt 应用程序 here。
我正在开发 Qt 应用程序,我想使用 crashpad 来报告崩溃。我已经下载了源代码并构建了它们。
现在我想 link 将那些静态地添加到我的应用程序中。
当我转到 out 文件夹时,我看到很多 .a 文件。我应该选择哪一个?
> find ./out -name *.a
./obj/handler/libhandler.a
./obj/snapshot/libsnapshot.a
./obj/snapshot/libtest_support.a
./obj/test/libtest.a
./obj/test/libgtest_main.a
./obj/test/libgmock_main.a
./obj/util/libutil.a
./obj/third_party/mini_chromium/mini_chromium/base/libbase.a
./obj/third_party/gtest/libgtest_main.a
./obj/third_party/gtest/libgtest.a
./obj/third_party/gtest/libgmock.a
./obj/third_party/gtest/libgmock_main.a
./obj/minidump/libminidump.a
./obj/minidump/libtest_support.a
./obj/client/libclient.a
我也使用这个命令构建了它:
build/gyp_crashpad.py -Dmac_deployment_target=10.12
不知道要不要加一些参数
有人可以帮忙吗?
提前致谢
也许可以在您的代码中输入:
sys._excepthook = sys.excepthook
def my_exception_hook(exctype, value, traceback):
# Print the error and traceback
print(exctype, value, traceback)
# Call the normal Exception hook after
sys._excepthook(exctype, value, traceback)
sys.exit(1)
# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook
此外,导入系统。此代码打印错误并报告它。
通过 gn
和 ninja
构建 Crashpad,其中 gn
生成构建配置,ninja
进行实际构建。
要使 macOS Qt 应用程序生成小型转储并将它们上传到远程服务器,需要将其链接到 Crashpad 库 libcommon.a
、libclient.a
、libutil.a
、libbase.a
, mig_output.a
:
# Crashpad libraries
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lcommon
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lclient
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lbase
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lutil
LIBS += -L$$PWD/Crashpad/Libraries/MacOS/$$ARCH -lmig_output
该应用程序还需要与系统库 bsm
以及框架 AppKit
和 Security
:
# System libraries
LIBS += -L/usr/lib/ -lbsm
LIBS += -framework AppKit
LIBS += -framework Security
此外,您需要将 crashpad_handler
与您的应用程序打包在一起,并确保它在运行时可用。
可以找到有关构建 Crashpad 的更多信息 here。
可以找到与 Crashpad 集成的示例 macOS Qt 应用程序 here。