进一步加强区门户网站建设管理办法网站建设 套餐

news/2025/10/2 5:19:15/文章来源:
进一步加强区门户网站建设管理办法,网站建设 套餐,爱企查企业信息查询官网,遵义公司建网站要多少费用Google Breakpad是什么#xff1f; 一个开源的多平台崩溃报告系统。 Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块#xff0c;它支持Windows#xff0c;Linux和Mac和Solaris。由于他本身跨平台#xff0c;所以很大程度上减少了我们在平台移植时的工作#…Google Breakpad是什么   一个开源的多平台崩溃报告系统。   Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块它支持WindowsLinux和Mac和Solaris。由于他本身跨平台所以很大程度上减少了我们在平台移植时的工作毕竟崩溃转储每个平台下都不同使用起来很难统一而Google breakpad就帮我们做到了这一点不管是哪个平台下的崩溃都能够进行统一的分析。   现在很多工程都在使用它最著名的几个如ChromeFirefoxPicasa和Google Earth。另外他的License是BSD的也就是说我们即便是在商业软件中使用也是合法的。好东西 Google Breakpad原理(比较抽象)         breakpad把应用程序分成三个部分代码breakpad客户端和调试信息。       1. 在build system中通过symbol dumper用平台相关的调试信息生成平台无关的symbol文件。这样做的好处很明显一旦平台无关了所有平台的崩溃就可以做统一的分析了。   2. breakpad采取进程外转储和分析崩溃的方式他使用C/S结构客户端用来捕获当前进程中发生的崩溃并通知服务端崩溃发生。服务端用来响应客户端抓取dump文件。这样做的目的是为了减少崩溃进程对dump的影响。   3. Dump生成后转发到崩溃分析器中这个部分可以在本地也可以在服务器上它对Dump文件进行解析生成可读的堆栈信息。 Google Breakpad安装和编译Windows   1、  下载Google breakpad源代码从svn中签出最新代码   2、  安装python2.7版本可用   3、  生成Windows工程文件   cd 源码目录/src/tools/gyp# 注意此处不能使用全路径不然会出错gyp.bat --no-circular-check ../../client/windows/breakpad_client.gyp      4、  Build All   备注如果无法通过svn下载源代码可在CSDN上利用网友分享的。 Google Breakpad的使用        在Windows下使用breakpad的方法很简单只需要创建一个ExceptionHandler的类即可这个ExceptionHandler就是用户捕获崩溃的类。 1 handler new ExceptionHandler(const wstring dump_path,2 FilterCallback filter,3 MinidumpCallback callback,4 void* callback_context,5 int handler_types,6 MINIDUMP_TYPE dump_type,7 const wchar_t* pipe_name,8 const CustomClientInfo* custom_info); 参数说明   l  //dump文件路径。   l  //crash时调用回调函数返回ture/false来继续/停止异常处理。   l  //minidump写入后调用的回调函数   l  //设备上下文回调使用的   l  //HandlerType异常类型可在exception_handler.h查看   l  //minidump的类型使用DbgHelp.h中MINIDUMP_TYPE类型   l  //接收crash的server端的管道名   l  //使用OOP产生minidump时使用这个自定义客户信息类指针来发送自定义数据      使用breakpad的时候有两个地方需要注意   1. 把breakpad的solution下的几个工程包含到你开发的工程中或者直接包含它们的lib。     common基础功能包含一个对GUID的封装和http上传的类。     exception_handler用来捕获崩溃的类。     crash_generation_serverbreakpad的服务端用来在产生崩溃时抓取dump。     crash_generation_clientbreakpad的客户端用来捕获当前进程的崩溃。   2. 在初始化breakpad之前记得先创建好dump文件的目录不然breakpad服务端将不能正常的写dump这会导致breakpad客户端在崩溃时无限等待服务端dump写完的消息最后失去响应。 进程内抓取Dump   进程内抓取Dump文件是最简单的breakpad的用法。  1 bool InitBreakpad()2 {3 google_breakpad::ExceptionHandler *pCrashHandler 4 new google_breakpad::ExceptionHandler(Lc:\dumps,5 onExceptionFilter,6 onMinidumpDumped,7 NULL,8 google_breakpad::ExceptionHandler::HANDLER_ALL,9 MiniDumpNormal, 10 NULL, 11 NULL); 12 13 if(pCrashHandler NULL) 14 { 15 return false; 16 } 17 18 return true; 19 } 进程外抓取Dump   使用进程外抓取Dump是比较推荐的做法。使用进程外抓取Dump时需要指定服务端和客户端在服务端中需要创建CrashGenerationServer的实例而在客户端中则只需要创建ExceptionHandler即可。此外如果服务端自己需要抓进程内的Dump请将pipe的参数置为NULL。 1 const wchar_t s_pPipeName[] L\\.\pipe\breakpad\crash_handler_server;2 const std::wstring s_strCrashDir Lc:\dumps;3 4 bool InitBreakpad()5 {6 google_breakpad::CrashGenerationServer *pCrashServer 7 new google_breakpad::CrashGenerationServer(s_pPipeName,8 NULL,9 onClientConnected, 10 NULL, 11 onClientDumpRequest, 12 NULL, 13 onClientExited, 14 NULL, 15 true, 16 s_strCrashDir); 17 18 if(pCrashServer NULL) 19 { 20 return false; 21 } 22 23 if(!pCrashServer-Start()) 24 { 25 delete pCrashServer; 26 pCrashServer NULL; 27 } 28 29 google_breakpad::ExceptionHandler *pCrashHandler 30 new google_breakpad::ExceptionHandler(s_strCrashDir, 31 onExceptionFilter, 32 onMinidumpDumped, 33 NULL, 34 google_breakpad::ExceptionHandler::HANDLER_ALL, 35 MiniDumpNormal, 36 (pCrashServer NULL) ? s_pPipeName : NULL, 37 NULL); 38 39 if(pCrashHandler NULL) 40 { 41 return false; 42 } 43 44 return true; 45} Google Breakpad代码分析        代码结构   在我们来看breakpad是如何实现其强大的功能之前我们先来看一下他的代码结构吧。         Google breakpad的源代码都在src的目录下分为如下几个文件夹   client这下面包含了前台应用程序中捕捉dump的部分代码里面按照平台分成各个子文件夹   common前台后台都会用到的部分基础代码字符串转换内存读写md5神马的   google_breakpadbreakpad中公共的头文件   processor用于在后台处理崩溃的核心代码   testing测试工程   third_party第三方库   tools一些小工具用于处理dump文件和符号表 Google Breakpad的崩溃捕获机制   在Windows下捕获崩溃大家很容易会想到那个捕获结构化异常的ApiSetUnhandledExceptionFilter。   breakpad中也使用了这个Api来实现的崩溃捕获另外breakpad还捕获了另外两种C运行库提供的崩溃一种是使用_set_purecall_handler捕获纯虚函数调用产生的崩溃还有一种是使用_set_invalid_parameter_handler捕获错误的参数调用产生的崩溃。 breakpad中的C/S结构   由于breakpad是在进程外抓取dump所以breakpad需要实现一个C/S结构来处理崩溃进程抓取dump的请求。   breakpad中使用了命名管道来实现IPC。   (1)、Register   客户进程连接上服务进程连接上管道设置管道状态   客户进程向服务进程注册通过NamedPipe将客户进程的信息传递给服务进程也从服务进程读取到数据。   客户进程传递的数据包括服务进程ID、dump类型、crash线程id的地址、EXCEPTION_POINTERS指针的地址、参数异常和纯虚函数异常的断言信息地址、客户进程信息。服务进程会监控客户进程的退出。   客户进程接收的数据包括客户进程用于触发生成dump的Event Handle客户进程用于监听的dump生成完毕Event Handle客户进程用于监听的服务进程活着Mutex handle等。   客户进程在TransactNamePipe函数执行完毕之后再执行了一次WriteFile操作发送MESSAGE_TAG_REGISTRATION_ACK消息给服务进程服务进程收到该ACK消息时关闭跟客户进程的连接。服务进程对管道的操作顺序为读--写--读第二次读是客户进程通知服务进程关闭管道。   在客户端初始化ExceptionHandler的时候如果指定了PipeName也就表示此时需要使用进程外的dump抓取ExceptionHandler会建立一个 CrashGenerationClient的对象由这个对象连接服务端将自己注册到服务端上去。注册的过程会顺序调用IsRegistered、ConnectToServer、ConnectToPipe、RegisterClient等函数。   大家可以参看exception_handler.cc中的ExceptionHandler::Initialize函数。     在服务端初始化CrashGenerationServer的时候就会建立一个命名管道并等待客户端来连接OnPipeConnected。一旦有客户端连接上来HandleReadDoneState服务端会为每一个客户端生成一个ClientInfo的对象之后用这个对象来管理所有的客户端ClientInfo::Initialize()并创建客户连接句柄将连接结果信息PrepareReply、DuplicateHandle回送给客户端RespondToClient客户端接收到回送信息ValidateResponse。        (2)、RequestDump   一旦有崩溃发生客户端就会向服务端请求DumpRequestDump,服务端响应OnDumpRequest就会从这个ClientInfo对象中取出dump所需要的信息具体地通过RegisterWaitForSingleObject注册了崩溃Event Handle的回调函数。回调函数里做了这么几件事情   1、通过ReadProcessMemory读取客户进程的信息   2、生成dump     3、触发dump生成事件通知客户进程复位触发dump事件。   大家可以参看crash_generation_server.cc中的CrashGenerationServer::HandleReadDoneState函数。 Google Breakpad存在的问题   进程外生成dump有很多好处其中最大的好处就是不会被崩溃进程影响这样dump的过程就不容易出错但是这样也有一定的弊端。   1. 部分崩溃无法抓取。在一些极端的崩溃如堆栈溢出之类的崩溃进程外抓取dump有时候会失败。   2. 无法抓取死锁或者其他原因导致的进程僵死。breakpad现在没有检测进程死锁的代码也没有在服务端控制客户端请求dump的代码所以现在breakpad无法抓取死锁等进程僵死的问题。   3. 对服务端有依赖。如果指定了在使用进程外抓取dumpbreakpad对服务端就有依赖。主要体现在抓取dump时如果服务端不存在客户端将无法正常抓取dump甚至有时会出现阻塞。   PS深入理解实现方式请调试Breakpad源代码。转载于:https://www.cnblogs.com/MakeView660/p/6077436.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设最新资讯上海网络营销上海网络推广

文章目录 由浅入深学习TapableTapable是什么Tapable的Hook分类同步和异步的 使用Sync*同步类型钩子基本使用bailLoopWaterfall Async*异步类型钩子ParallelSeries 由浅入深学习Tapable webpack有两个非常重要的类:Compiler和Compilation。他们通过注入插件的方式&a…

电信100m光纤做网站常州做上市公司律所

ctfshow的杂项签到题,下载压缩包之后里面有图片。 直接将图片用010editor打开,检索ctfshow可以看到答案。

网站主持人制作网站建设策划书总结

工业镜头是图像采集系统的重要光学设备。它的作用是将目标物体的像成在相机的感光面上。 一、工业镜头原理 镜头是对光线进行调制和变换,使目标能够成像到相机的感光芯片上。将不同折射率的硝材加工成高精度的曲面,再把这些曲面进行组合后设计成能够满…

郑州注册网站江东怎样优化seo

南邮杯CTF 文件包含 题目地址:asdf 点击后利用file函数对show.php进行文件利用 使用伪协议php://filter/readconvert.base64-encode/resourceindex.php访问index.php文件 base64解码后得到flag [极客大挑战 2019]Secret File 题目地址:BUUCTF在线评测 …

网站建设 保密wordpress文章权限

nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端, nuget项目依赖定义格式 新版 nuget 和VS 2019 都推荐项目依赖采用 PackageReference 格式, 这种格式的依赖声明是放到 .csproj 项目文件中的, 之前是使用…

网站建设登录界面设计步骤百度网站登录入口

前言现在对于Docker容器的隔离性都有所了解了,但对容器IP地址的分配、容器间的访问等还是有点小疑问,如果容器的IP由于新启动导致变动,那又怎么才能保证原有业务不会被影响,这就和网络有挂钩了,接下来就大概说说。正文…

wordpress软件站模板网页设计是做什么

引言 JSON,作为一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,而被广泛应用于网络通信和配置文件中。在Java中,有两个强大的工具帮助咱们处理JSON数据——Jackson和Gson。这两个库各有千秋…

郑州金水区建设局网站如何打开用wordpress

类型 说明 后缀或前缀 示例 sbyte 有符号 8 位整数 y 86y 0b00000101y byte 无符号 8 位自然数 uy 86uy 0b00000101uy int16 有符号 16 位整数 s 86s uint16 无符号 16 位自然数 us 86us int int32 有符号 32 位整数 l none。 86 86l uint uint32 无符号 32 位自然数 u 或 ul 8…

网站优化是怎么做的网络推广方案下拉管家xiala11

一、需求 在执行 mvn clean package -Dmaven.test.skiptrue 后,生成的 jar 包带有自定义系统时间。 二、实现 方法一:使用自带属性(不推荐) 使用系统时间戳,但有一个问题,就是默认使用 UTC0 的时区。举例…

网站推广广告包装设计十大网站

前言:MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”。 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码。同时…

德赞网站建设网站制作企业网站的设计公司

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] 1 的元素。 开始你拥有…

怎么做提卡密网站广东省造价工程信息网

作者:lesleyfootprint.network 数据源:Token Sector Dashboard ChatGPT 的热潮点燃了 AI 领域,AI 与区块链技术的融合成为市场关注的焦点。因为区块链的一个显著特征是它能够在链上安全地存储大量数据,这与 AI 模型对数据的密集…

佛山中小企业网站制作wordpress首页自定义广告位

出于MVVM学习的需要,复习下匿名方法和Lambda表达式,因为之前用的也比较少,所以用的也不是很熟练,Baidu下相关的知识,写了这个Demo,目标是用简单的方法展示这个怎么用。 这里偏重的和LINQ中的Lambda表达式 …

网站建设服务器介绍图片网站的类型

背景 1 工作需要,需要修改一个java的程序逻辑,之前都是用的frida修改的,但是现在的工作场景,重视效率,所以frida这种重工具被pass了,只能重新选其他工具,初始的时候是想用java本身的一些修改工…

双语网站建设报价营销与运营的区别

友情提示:全文13000多文字,预计阅读时间10-15分钟Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题。当我们搭建好Eureka Server服务注册中心并启动后&#…

广州达美网站建设wordpress黑帽插件

某项目中,我要给别人封装一个深度学习算法的SDK接口,运行在RK3588平台上,然后客户给我的交叉编译工具链是 然后我用他们给我的交叉编译工具链报下面的错误: aarch64-buildroot-linux-gnu-gcc --version /data/chw/aarch64/bin/cca…

免费建站网页无需登陆广西新狐网络科技有限公司

在主要课程学完并确定论文题目后,研究生撰写论文的时间为一年半至两年。(一)论文选题的要求1. 选题必须有一定的理论意义或应用价值论文选题必须对国民经济建设或在学术上有一定的价值。2.国内外研究动态论文选题时,学生必须掌握与该课题有关…

怎样做网站公司的销售如何修改百度上面的门店号码

转: js判断数组里是否有重复元素的方法 https://blog.csdn.net/longzhoufeng/article/details/78840974第一种方法:但是下面的这种方法数字字符串类似相同,返回的还是真,有点不靠谱,如果是其它的字符是可以的 var ary1…

杭州海淀区网站建设详情页设计思路遵循哪五个营销环节

目的: 鉴于目前网络上没有完整的kafka数据投递至splunk教程,通过本文操作步骤,您将实现kafka数据投递至splunk日志系统 实现思路: 创建kafka集群部署splunk,设置HTTP事件收集器部署connector服务创建connector任务&a…

h5技术建设网站汽车网页

一、新建一个立方体 ShiftA新建一个立方体用来演示。 二、物体的移动 xyz轴移动 点击下图图左侧的移动选项后,选中要移动的物体,会出现三个箭头的方向,这分别代表沿着x、y、z轴移动。xyz平面移动 这个小正方体代表沿着某一个面移动&#…