Как собрать crashpad для приложения Qt

Я занимаюсь разработкой приложения Qt и хотел бы использовать crashpad для сообщения о сбоях. Я скачал источники и построил их.

Теперь я хотел бы связать их статически с моим приложением.

Когда я выхожу в папку 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

Я не знаю, следует ли мне добавить некоторые параметры

Может ли кто-нибудь помочь, пожалуйста?

заранее спасибо

0 ответов

Вы должны строить, используя gn а также ninja, где gn генерирует конфигурацию сборки и ninja делает собственное здание.

Для MacOS вам нужно будет ссылаться на libclient.a, libutil.a, libbase.a и все .o файлы в out/Default/obj/out/Default/gen/util/mach если вы хотите создать минидампы и загрузить их на удаленный сервер.

Дополнительно вам необходимо упаковать crashpad_handler с вашим приложением и убедитесь, что оно доступно во время выполнения.

Более подробную информацию о сборке Crashpad можно найти здесь.

Пример приложения MacOS Qt, интегрированного с Crashpad, можно найти здесь.

Возможно, введите это в свой код:

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

Кроме того, import sys. Этот код печатает ошибку и сообщает о ней.

Другие вопросы по тегам