summaryrefslogtreecommitdiff
path: root/src/config/config_parse.cpp
diff options
context:
space:
mode:
author杨威 <[email protected]>2020-08-03 19:18:42 +0800
committer杨威 <[email protected]>2020-08-14 15:50:20 +0800
commitf6d9d68ae79681e36ea4010f5ea4faaaf6b09cc1 (patch)
tree455b0ac02447c3f475d2099f6177e599f766ed35 /src/config/config_parse.cpp
parentb8e69bb7c7b84c8c7d637c2f989bdc0269ccfd5c (diff)
集成breakpad输出minidumpv4.1.0-rc1
1、sapp增加-g参数,测试生成minidump功能,默认读取./etc/sapp.toml下配置 2、代码增加src/support/breakpad_mini目录,封装简单的in_process输出minidump方式 3、控制参数集成在sapp配置项中,可配置内容如下: [breakpad] disable_coredump=1 enable_breakpad=1 breakpad_minidump_dir=/tmp/crashreport enable_breakpad_upload=0 breakpad_upload_url=http://127.0.0.1/ 1、移除sapp原有的dump_backtrace函数(已废弃) 2、更新breakpad默认参数,默认打开coredump,关闭breakpad 移除breakpad上传时的-p与-v参数 Breakpad_mini update:上传时-p参数值使用basename函数从/proc/self/exe获取,默认为进程名 移除breakpad_mini中的install,避免影响sapp打包 platform_init结束后,调用sapp_init_breakpad_mini() 增加tools.signal_handler.signal,开启后将接管SIGUSR1 和SIGUSR2信号,预留给实现优雅退出 更新CI流程,增加从debuginfo中导出elf文件,上传至sentry 指定breakpad INSTALL_DIR 1、调整breakpad编译选项,增加头文件目录包含INSTALL_DIR下的breadpad目录 2、撤销对INSTALL_DIR设置至/usr/local/的操作,避免编译时需要提权 Bugfix:编译breakpad_mini时lib_name写错成.so 移除cmake中对/usr/local/include/breakpad的显示引用 1、移除sapp原有的dump_backtrace函数(已废弃) 2、更新breakpad默认参数,默认打开coredump,关闭breakpad Breakpad_mini update:上传时-p参数值使用basename函数从/proc/self/exe获取,默认为进程名 移除breakpad_mini中的install,避免影响sapp打包 platform_init结束后,调用sapp_init_breakpad_mini() 增加tools.signal_handler.signal,开启后将接管SIGUSR1 和SIGUSR2信号,预留给实现优雅退出 更新CI流程,增加从debuginfo中导出elf文件,上传至sentry 指定breakpad INSTALL_DIR Bugfix:编译breakpad_mini时lib_name写错成.so 移除cmake中对/usr/local/include/breakpad的显示引用 ci更新,默认编译CAPTURE_MODE =MARSIO的sapp 更新ci/travis.sh,指定CAPTURE_MODE 编译 修复笔误 更新ci/travis.sh,增加安装mrzcpd依赖rpm包 调整sapp_init_breakpad_mini初始化位置,提至MESA_platform_init之前 更新sapp.toml,增加breakpad配置模板 更新ci文件,默认编译PLATFORM_MODE=INLINE
Diffstat (limited to 'src/config/config_parse.cpp')
-rw-r--r--src/config/config_parse.cpp35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/config/config_parse.cpp b/src/config/config_parse.cpp
index e5459f4..585691c 100644
--- a/src/config/config_parse.cpp
+++ b/src/config/config_parse.cpp
@@ -1,3 +1,5 @@
+#include "breakpad.h"
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -7,7 +9,6 @@ extern "C" {
#include "support/tomlc99_wrap.h"
#include "field_stat2.h"
-
/* ��ֻ̬��ȫ�ֱ������Է��ڴ����, ������sapp_global_val�� */
static const char *default_config_file = "./etc/sapp.toml";
@@ -221,8 +222,13 @@ void sapp_cla_override_cfg_file(void)
{
char *cmd_args;
sapp_config_t *pconfig = &sapp_global_val->config;
+
+ if (sapp_get_cla_raw("coredump", &cmd_args) >= 0){
+ breakpad_segv_generate();
+ }
- if(sapp_get_cla_raw("dumpfile", &cmd_args) >= 0){ /* dumpfileģʽ�Զ�����interface���� */
+ if (sapp_get_cla_raw("dumpfile", &cmd_args) >= 0)
+ { /* dumpfileģʽ�Զ�����interface���� */
strcpy(pconfig->packet_io.depolyment_mode_str, "dumpfile");
pconfig->packet_io.depolyment_mode_bin = DEPOLYMENT_MODE_MIRROR;
sapp_global_val->individual_fixed.depolyment_mode_private = NET_CONN_PARALLEL;
@@ -230,13 +236,13 @@ void sapp_cla_override_cfg_file(void)
pconfig->packet_io.internal.interface.type_bin = CAP_MODEL_PCAP_DUMPFILE;
}
- if(sapp_get_cla_raw("dumpfile-file", &cmd_args) >= 0){
+ if (sapp_get_cla_raw("dumpfile-file", &cmd_args) >= 0)
+ {
strncpy(sapp_global_val->config.packet_io.pcap_dumpfile_name, cmd_args, NAME_MAX);
}
-
- return;
-}
+ return;
+ }
void sapp_generate_sample_config(void)
{
@@ -701,6 +707,8 @@ int sapp_parse_config(void)
tomlc99_wrap_load_int_def(default_config_file, (char *)"PROTOCOL_FEATURE", (char *)"treat_vlan_as_mac_in_mac", (int *)&pconfig->protocol_feature.treat_vlan_as_mac_in_mac_enabled, 0);
/******************************* TOOLS **********************************/
+ tomlc99_wrap_load_int_def(default_config_file, (char *)"tools.signal_handler", (char *)"signal", (int *)&pconfig->tools.signal_handler.signal, 0);
+
tomlc99_wrap_load_int_def(default_config_file, (char *)"tools.pkt_dump", (char *)"enabled", (int *)&pconfig->tools.pkt_dump.enabled, 0);
tomlc99_wrap_load_string_def(default_config_file, (char *)"tools.pkt_dump", (char *)"mode", pconfig->tools.pkt_dump.mode_str, NAME_MAX, "udp_socket");
tomlc99_wrap_load_string_def(default_config_file, (char *)"tools.pkt_dump", (char *)"BSD_packet_filter", str_tmp, ARG_MAX, "");
@@ -758,6 +766,21 @@ int sapp_parse_config(void)
return 0;
}
+/* init breakpad_mini */
+void sapp_init_breakpad_mini(void)
+
+{
+ struct breakpad_instance * g_breakpad = breakpad_init(default_config_file, "breakpad", sapp_global_val->individual_fixed.log_handle);
+ if(g_breakpad == NULL){exit(-1);}
+ sapp_global_val->individual_fixed.breakpad = g_breakpad;
+ return;
+}
+
+void sapp_segv_generate()
+{
+ breakpad_segv_generate();
+}
+
#ifdef __cplusplus
}
#endif