Как собрать 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. Этот код печатает ошибку и сообщает о ней.