如何为Qt应用程序构建Crashpad

9

我正在开发Qt应用程序,希望使用crashpad来报告崩溃。我已经下载了源代码并进行了构建。

现在我想将它们静态链接到我的应用程序中。

当我进入输出文件夹时,看到很多.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

我不知道是否需要添加一些参数

有人可以帮忙吗?

提前感谢


1
这个CMake / Nuget包装器 for Crashpad可能会引起你的兴趣,相比于普通库,在构建中使用起来更加简单和直接。 - squeevee
2个回答

3

使用gnninja构建Crashpad,其中gn生成构建配置,ninja执行实际的构建。

要想在macOS Qt应用程序中生成minidumps并将其上传到远程服务器,需要将其与Crashpad库libcommon.alibclient.alibutil.alibbase.amig_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的更多信息,请单击此处

可在此处找到已与Crashpad集成的示例macOS Qt应用程序。


-1

也许你可以在你的代码中输入这个:

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

同时,导入 sys。这段代码将打印错误并报告它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接