在Mac OS X上构建Google Breakpad

vil*_*pam 8 c++ macos google-breakpad

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

Breakpad wiki指定应该构建client/mac/Breakpad.xcodeproj,如果我理解正确,它会产生一个包含动态链接库的Breakpad.framework.还有关于如何在Objective-C应用程序中使用它的示例代码,但所有这些似乎与在其他平台上执行操作的正常方式非常不同,包括使用plist和其他不属于的东西我的申请 我更愿意跨平台做尽可能相似的事情.

例如,似乎是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
Run Code Online (Sandbox Code Playgroud)

在我的项目中,我们正在做同样的事情,只是exception_handler.lib在Windows上链接.似乎在Linux上,Breakpad libbreakpad_client.a会以相同的方式生成相应的链接,但不能在Mac OS X上生成.如果我这样做的话

./configure
make
Run Code Online (Sandbox Code Playgroud)

从breakpad根目录libbreakpad.a生成一个不包含异常处理程序的,以及应该没有构建的libbreakpad_client.a.我很可能误解了使用Breakpad的正常方式以及在Mac上构建外部库的正常程序,所以任何帮助都会受到赞赏.

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

Ted*_*rek 3

不幸的是,Breakpad 源代码中没有解决这个问题的方法。XCode 项目只是构建 Breakpad 框架,因为这是支持更多的客户端 API。您可以使用自己的 Makefile 集或任何您想要的构建设置来构建代码,就像 Firefox 通过查看 Mozilla makefile 集一样:

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 问题跟踪器中提交错误,要求 XCode 项目也构建此静态库。这不会是一个困难的补丁。