CrashDetect 插件技术文档
本文档将详细介绍如何安装、使用 CrashDetect 插件,以及如何使用其 API。CrashDetect 是一款用于帮助调试运行时错误和服务器崩溃的工具,它能够在发生错误时提供详细的错误描述、堆栈跟踪和其他有用的信息,以便快速定位和解决问题。
1. 安装指南
1.1 下载二进制包
从 GitHub 的 Releases 页面下载二进制包,或者从源代码自行构建(见下面的“从源代码构建”)。
1.2 安装插件
- 解压下载的二进制包,将
crashdetect.so(Linux)或crashdetect.dll(Windows)复制到<服务器>/plugins/目录下。 - 在
server.cfg文件的plugins行中添加crashdetect(Windows)或crashdetect.so(Linux)。
二进制包中包含一个头文件 crashdetect.inc,其中包含一些可能非常有用的辅助函数。但请注意,您不需要包含它即可使用 CrashDetect。
2. 使用说明
除了安装插件外,您无需进行任何其他操作即可开始接收到错误报告。默认情况下,所有错误都会保存在 server_log.txt 文件中,但这可以通过配置进行更改(见下面的“配置”)。
为了获得更好的调试体验,请确保您的脚本在启用调试信息的情况下编译。这样做将使堆栈跟踪中显示更多信息,例如函数名、参数名和值、源文件名和行号。
请注意,使用此插件时,您的代码将运行得更慢,因为检测错误并提供准确错误信息的相关开销。通常这在开发过程中是可以接受的,但不建议在具有许多玩家的生产(实时)服务器上加载 CrashDetect。
3. 项目API使用文档
以下是 crashdetect.inc 中定义的一些函数,它们为访问插件信息提供了更友好的 API。
bool:IsCrashDetectPresent()- 检查 CrashDetect 插件是否已加载。SetCrashDetectLongCallTime(us_time)- 设置长时间函数调用的警告阈值。GetCrashDetectLongCallTime()- 获取长时间函数调用的警告阈值。DisableCrashDetectLongCall()- 禁用长时间函数调用警告。EnableCrashDetectLongCall()- 启用长时间函数调用警告。ResetCrashDetectLongCallTime()- 将长时间函数调用阈值重置为默认值(从server.cfg中获取)。RestartCrashDetectLongCall()- 重置长时间函数调用的计时器。bool:IsCrashDetectLongCallEnabled()- 检查长时间函数调用检测是否已启用。bool:HasCrashDetectLongCall()- 检查当前版本的 CrashDetect 是否支持此功能。GetCrashDetectDefaultTime()- 获取默认的长时间函数调用阈值。DisableCrashDetectAddr0()- 在此模式下禁用对地址零的写入检测。EnableCrashDetectAddr0()- 在此模式下启用对地址零的写入检测。bool:IsCrashDetectAddr0Enabled()- 检查错误是否已启用。bool:HasCrashDetectAddr0()- 检查当前版本的 CrashDetect 是否支持此功能。
4. 项目安装方式
4.1 从源代码构建
如果要从源代码构建 CrashDetect,例如修复错误并提交 pull request,只需按照以下步骤操作。您需要安装 C++ 编译器和 CMake。
Linux
安装 gcc 和 g++,make 和 cmake。在 Ubuntu 上,您可以使用以下命令:
sudo apt-get install gcc g++ make cmake
如果您在使用 64 位系统,您需要安装额外的包来编译 32 位程序:
sudo apt-get install gcc-multilib g++-multilib
对于 CentOS:
yum install gcc gcc-c++ cmake28 make
现在您可以构建 CrashDetect:
cd crashdetect
mkdir build && cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF
make
Windows
您需要安装 CMake 和 Visual Studio(Express 版本即可)。之后,可以从命令行运行 cmake:
cd crashdetect
mkdir build && cd build
path/to/cmake.exe ../ -DBUILD_TESTING=OFF
或者从 cmake-gui 中执行相同的操作。这将在构建文件夹中生成一个 Visual Studio 项目。
要构建项目:
path/to/cmake.exe --build . --config Release
您也可以从 Visual Studio 中构建项目:打开 build/crashdetect.sln 并选择“构建”菜单中的“构建解决方案”(或直接按 F7)。
本文档在遵循 2-clause BSD 许可证的情况下提供。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C064
MiniMax-M2.1从多语言软件开发自动化到复杂多步骤办公流程执行,MiniMax-M2.1 助力开发者构建下一代自主应用——全程保持完全透明、可控且易于获取。Python00
kylin-wayland-compositorkylin-wayland-compositor或kylin-wlcom(以下简称kywc)是一个基于wlroots编写的wayland合成器。 目前积极开发中,并作为默认显示服务器随openKylin系统发布。 该项目使用开源协议GPL-1.0-or-later,项目中来源于其他开源项目的文件或代码片段遵守原开源协议要求。C01
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
agent-studioopenJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力TSX0130
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00