我正在尝试基于主干修订版782为Mac OS X构建Google Breakpad,作为移植应用程序的一部分。

The Breakpad wiki指定应该构建client/mac/Breakpad.xcodeproj,如果我理解正确的话,它会生成Breakbreak.framework,其中包括动态链接的lib。还有一个示例代码,说明如何从Objective-C应用程序中使用此代码,但所有这些似乎与在其他平台上正常的处理方式(包括使用plists和其他不包含在内的其他方式)有很大不同我的应用程序。我宁愿跨平台做尽可能相似的事情。

例如,this似乎是Firefox使用Breakpad的方式:

// include exception_handler.h from client/<platform>/handler,
// using ... here for brevity
#include "... exception_handler.h"
...
gExceptionHandler = new google_breakpad::
    ExceptionHandler(tempPath.get(),
                     nsnull,
                     MinidumpCallback,
                     nsnull,
#if defined(XP_WIN32)
                     google_breakpad::ExceptionHandler::HANDLER_ALL);
#else
                     true);
#endif

在我的项目中,我们正在做同样的事情,只是在Windows上针对exception_handler.lib进行链接。似乎在Linux上,Breakpad生成了可以以相同方式链接的对应libbreakpad_client.a,但在Mac OS X上却没有。
./configure
make

从breakpad根目录中生成的libbreakpad.a不包含异常处理程序,并且不应构建libbreakpad_client.a。在使用Breakpad的常规方法以及在Mac上构建外部库的常规过程中,我可能都对任何事情都误解了,因此可以提供任何帮助。

如何在Mac OS X上构建libbreakpad_client.a

最佳答案

不幸的是,在Breakpad源文件中没有解决方案。 XCode项目只是构建Breakpad框架,因为它是受支持更多的客户端API。您可以通过查看一组Mozilla生成文件,使用自己的Makefile集合或与Firefox相同的任何构 build 置来生成代码:

http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/common/Makefile.in

http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/common/mac/Makefile.in

http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/Makefile.in

http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/mac/handler/Makefile.in

http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation/Makefile.in

并收集CSRCS/CPPSRCS/CMSRCS/CMMSRCS中引用的文件集,并构建所有文件。

您可能还会在Breakpad issue tracker中提交一个错误,以要求XCode项目也构建此静态库。这不是一个困难的补丁。

07-26 03:39