我将googlerashpad库集成到我的应用程序中。一切正常,但是现在我想在自己的服务器上收集故障转储。
从文档中可以了解到,我可以在CrashpadClient::StartHandler() API中设置“url”参数,并且crash_handlerminidump上传到我的服务器中。
但是我没有任何信息可以在服务器端收到此转储信息。
我在服务器上创建了一个简单的php脚本:

<?php error_log(var_export($_GET, true)); ?>

并将其指向“url”参数。

并在服务器日志中找到以下字符串:
mod_fcgid: stderr: array (
mod_fcgid: stderr:   'product' => 'My Product',
mod_fcgid: stderr:   'version' => '1.0.0',
mod_fcgid: stderr:   'guid' => '236ac3bd-918b-4daa-948c-3a564509e3d3',
mod_fcgid: stderr: )

接下来我该怎么办,以及如何在服务器端组织minidumps集合?

最佳答案

在您的服务器上,您需要调用minidump_stackwalk,这是一个用于分析小型转储崩溃文件的Breakpad工具。

这是在MacOS上不带任何参数调用minidump_stackwalk时所获得的信息:

Usage: minidump_stackwalk [options] <minidump-file> [symbol-path ...]

Output a stack trace for the provided minidump

Options:

  -m         Output in machine-readable format
  -s         Output stack contents

您需要使用最小转储文件的路径和包含相应符号的目录来调用minidump_stackwalk

通过Breakpad工具dump_symssymupload生成符号。在服务器上,您还需要提供一种上传这些符号的方法,以便minidump_stackwalk可以访问它们。重要的是要注意,symbols文件夹需要以非常特定的格式放在磁盘上,否则minidump_stackwalk不会展开minidump中的调用堆栈。 symbols文件夹内所有sym文件的目录结构与以下路径结构/MODULE_NAME/MODULE_ID/MODULE_NAME.sym完全匹配。

可以在here中找到有关如何使用minidump_stackwalk的更多信息。

有关如何使用dump_symssymupload的更多信息,请参见herehere

关于c++ - 我应该在服务器端做什么,以便从崩溃垫库中收集小型转储?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57140924/

10-17 01:36