首页 > 系统相关 >Windows 上 sentry-native v0.7.2 版本的使用

Windows 上 sentry-native v0.7.2 版本的使用

时间:2024-05-22 19:42:09浏览次数:27  
标签:body sentry Windows zlib len compressed 使用 v0.7

在我建议 sentry-native 社区添加 contetn: gzip 功能,并提交了一个 PR 帮助他们完成后,终于在 v0.7.2 中添加了该功能

https://github.com/getsentry/sentry-native/releases/tag/0.7.2 

不过实际中使用与旧版本存在一些差距,主要在于 zlib 库的引用,所以记录下差异的地方和解决的方法

sentry-native 是使用 CMake-Gui 完成构建的,0.7.2 的版本多了 SENTRY_TRANSPORT_COMPREESION 选项

当我们勾选该选项后就是默认使用 gzipped_with_compression 函数来压缩请求消息,参考下面部分源码

#ifdef SENTRY_TRANSPORT_COMPRESSION
    char *compressed_body = NULL;
    size_t compressed_body_len = 0;
    compressed = gzipped_with_compression(
        body, body_len, &compressed_body, &compressed_body_len);
    if (compressed) {
        if (body_owned) {
            sentry_free(body);
            body_owned = false;
        }
        body = compressed_body;
        body_len = compressed_body_len;
        body_owned = true;
    }
#endif

所以问题来了,sentry 要引用 zlib 库,但是它不能引用 crashpad 中的 crashpad_zlib 库,因为社区建议 sentry 和 crashpad 保持独立,两者尽量不耦合,故我们需要使用到系统的库=》zlib

那我们从哪找到 zlib 库呢,首先排除 GNUWIN32 提供的 zlib 库,原因是版本太老了

为什么我要提到 GNUWIN32 这个网站呢,因为国内技术博客提到 zlib 本地集成的解决方法中,很多都会让用户去该网站下载现成的 msi 文件去下载安装

实际使用当中,当你的项目使用到较新的 api,就会提示符号文件找不到,所以不建议使用过时的 zlib 库

最好的办法就是我们手动编译生成适合项目的 zlib 库,这里我使用的是 zlib-1.2.11 版本

源码地址:https://github.com/madler/zlib/releases/tag/v1.2.11

下载到本地后,打开 x86 Native Tools Command Prompt for Vs 20xx 命令框,并在其中 cd 到源码目录下,使用 nmake 快速编译生成

nmake -f win32/Makefile.msc

参考:zlib在Linux和windows中的使用

最后,在 CMake-Gui 中勾选 Advanced 框,并设置 zlib 头文件和静态库路径,如果不设置 zlib 路径,就会出现找不到 zlib 库的错误

解决方法;

 

重新 Configure 就会发现配置正常了

补充:

编译过程中可能会出现“Unresolved external symbol __except_handler4_common" in Visual Studio XXX” 这样的错误

这种问题一般就是 Code Generation/Runtime Library 的生成方法不匹配导致的

解决方法:所有的工程使用相同的 Runtime Library 编译,比如我这边 Release 下使用 MT

参考:"Unresolved external symbol __except_handler4_common" in Visual Studio 2015

标签:body,sentry,Windows,zlib,len,compressed,使用,v0.7
From: https://www.cnblogs.com/strive-sun/p/18206946

相关文章

  • windows server2019远程桌面授权许可证过期解决办法
     导致此现象的原因为服务器配置了多用户登录,在没授权的情况下,默认只能使用120天,之后远程连接时就会出现此报错,解决方法如下:删除注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\RCM\GracePeriod然后重启服务器注:注册表项可能无法删除,需要修改......
  • Windows那些MSC命令
    MicrosoftManagementConsole(MMC)是一个用于创建、保存和打开管理工具的应用程序。其中.msc是MicrosoftManagementConsole(MMC)Snap-in控制文件的扩展名。.msc文件是MMC控制台文件,这些文件通常包含一组特定的管理工具。在Windows中,可以通过运行以下.msc命令来......
  • ACM/XCPC对拍(Linux/Windows)
    前言心血来潮,整理一手c++对拍,分别是Linux下的脚本对拍和windows下的代码对拍windows对拍windows下的对拍总共三个文件分别是正解(ok.cpp)错解(bad.cpp)和对拍生成数据的文件,对拍的时候只需要运行生成数据文件(beat.cpp)即可。下面给出三个文件示例代码正解示例代码:ok.cpp#include<......
  • windows基本实用命令
    文件操作dir:查看当前目录下的文件,查看隐藏文件dir/atree:使用树形查看当前目录下的文件和文件夹,以及子目录中的文件和文件夹cd目录名:进入指定目录type文件名:查看文件内容del文件名:删除文件mkdir目录名:创建文件夹rmdir目录名:删除文件夹copy文件名/目录名文......
  • 微软推出新款AI电脑 CEO纳德拉:Windows与Mac真正的对决
    美国当地时间周一,微软推出了名为Copilot+PC(国内为Windows11AIPC)的全新AI电脑类别,微软CEO纳德拉在接受采访时称,这将重新点燃与苹果Mac之间的竞争。纳德拉表示:“苹果在多个方面都表现得极为出色,我们现在正期待Windows与Mac能够重新展开真正意义上的对决。”微软声称,无论是Surf......
  • 在 Windows 上运行,如何以管理员身份运行你的命令提示符或 PowerShell
    在Windows上以管理员身份运行命令提示符或PowerShell是非常简单的过程。以下是具体步骤:以管理员身份运行命令提示符:在开始菜单搜索框中输入cmd,然后从搜索结果中找到并点击命令提示符。右键点击命令提示符图标,然后在弹出的菜单中选择以管理员身份运行。以管理员身份......
  • 控制台+Topshelf实现Windows服务,以及打包
    场景:实现Windows服务,例如TerryService。1服务安装脚本serviceInstall.batcd/d%~dp0echo%date%_%time%>>InstallLog.txtTerryService.exeuninstall>>InstallLog.txtTerryService.exeinstall>>InstallLog.txtscconfigTerryServicetype=interacttype=......
  • windows cmd拉取linux文件夹下的文件,并解压
    前言:nginx静态文件从linux文件夹下拉取,然后放到windows下,并且解压 需要安装putty,用pscp命令del-pull.bat文件,负责删除本地文件夹下所有文件,并且拉取数据@echooffsetlocalsetFOLDER_PATH=C:\Users\admin\Desktop\yaya_nginx\web\echoDeletingfilesinfolder...rm......
  • 突破边界:基于Windows 11的高效渗透测试系统构建
    在这篇文章中,我将向大家推荐一款基于Windows11的渗透测试系统,由一位行业内大佬封装而成。这个名为Windows11PenetrationSuiteToolkit的项目旨在提供一个开箱即用的Windows渗透测试环境,方便安全专家和爱好者进行渗透测试工作。项目地址你可以在GitHub上找到该项目:W......
  • Mysql数据库安装卸载(windows)
    MySQL数据库环境准备MySQL下载、安装、配置、卸载、安装DBMS、使用DBMSMySQL版本及下载MySQL是Oracle的免费的关系型数据库,官网https://www.mysql.com/MySQL8.x新特性性能比5.7快支持NoSQL存储:5.7版本开始提供对NoSQL的支持,8.0.x作了改进窗口函数(新的查询方式)索引......