我将googlerashpad库集成到我的应用程序中。一切正常,但是现在我想在自己的服务器上收集故障转储。
从文档中可以了解到,我可以在CrashpadClient::StartHandler()
API中设置“url”参数,并且crash_handler
将minidump
上传到我的服务器中。
但是我没有任何信息可以在服务器端收到此转储信息。
我在服务器上创建了一个简单的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_syms
和symupload
生成符号。在服务器上,您还需要提供一种上传这些符号的方法,以便minidump_stackwalk
可以访问它们。重要的是要注意,symbols文件夹需要以非常特定的格式放在磁盘上,否则minidump_stackwalk
不会展开minidump中的调用堆栈。 symbols文件夹内所有sym文件的目录结构与以下路径结构/MODULE_NAME/MODULE_ID/MODULE_NAME.sym
完全匹配。可以在here中找到有关如何使用
minidump_stackwalk
的更多信息。有关如何使用
dump_syms
和symupload
的更多信息,请参见here和here。关于c++ - 我应该在服务器端做什么,以便从崩溃垫库中收集小型转储?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57140924/