diff options
| author | 杨威 <[email protected]> | 2020-08-03 19:18:42 +0800 |
|---|---|---|
| committer | 杨威 <[email protected]> | 2020-08-14 15:50:20 +0800 |
| commit | f6d9d68ae79681e36ea4010f5ea4faaaf6b09cc1 (patch) | |
| tree | 455b0ac02447c3f475d2099f6177e599f766ed35 /src/config/config_parse.cpp | |
| parent | b8e69bb7c7b84c8c7d637c2f989bdc0269ccfd5c (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.cpp | 35 |
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 |
