如何为Qt应用程序构建崩溃垫

时间:2019-01-11 20:57:19

标签: c++ qt static-libraries chromium gn

我正在开发Qt应用程序,我想使用rashpad报告崩溃。我已经下载并构建了源代码。

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

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

我不知道是否应该添加一些参数

有人可以帮忙吗?

预先感谢

2 个答案:

答案 0 :(得分:2)

您应该使用gnninja进行构建,其中gn生成构建配置,而ninja进行实际构建。

对于MacOS,如果要生成libclient.alibutil.alibbase.a.o中的所有out/Default/obj/out/Default/gen/util/mach文件,则需要链接小型转储并将其上传到远程服务器。

此外,您需要将crashpad_handler与应用程序打包,并确保其在运行时可用。

有关构建Crashpad的更多信息,请参见here

可以找到here与Crashpad集成在一起的MacOS Qt应用程序的示例。

答案 1 :(得分:-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。此代码将打印错误并报告错误。